The UNIX and Linux Forums  
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.

Go Back   UNIX og Linux Forums > Top Forums > Shell Programmering og Scripting
.
google unix.com



Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her.

Mere UNIX og Linux Forum Emner du måske kan finde Helpful
Tråd Thread Starter Forum Svar Last Post
Sådan concatenate hinanden følgende linjer shivi707 UNIX Desktop til dukkerne Spørgsmål & svar 1 01-12-2009 09:08 AM
behovet for at concatenate to linjer, hvis linjen doesnt ende med citater laxmi131 UNIX for Advanced & Ekspertsøgning Brugere 9 10-27-2008 07:22 AM
concatenate og vise 2 linjer som 1 med en betingelse for 2 linje? vithala Shell Programmering og Scripting 7 07-11-2008 01:01 AM
Behov løsning concatenate og vise 2 linjer som 1 med en betingelse for 2 linje? vithala UNIX for Advanced & Ekspertsøgning Brugere 1 07-10-2008 01:27 PM
Udvinder logfil Angivelser harpdl Shell Programmering og Scripting 2 07-13-2006 01:40 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Søg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 03-17-2009
BecTech BecTech is offline
Registreret Bruger
  
 

Join Date: Mar 2009
Stillinger: 2
Logfile - udvinde visse linjer til concatenate i 1 line

Jeg har fået en log-fil fra automatiske diagnostiske løber. Logfilen er knyttet til hver gang en automatisk log køres.
Jeg vil gerne bare trække nogle linjer fra hver kører i logfilen, og sammenkæde dem i 1 kommasepareret linje (til eksport til Excel eller en HTML-tabel).

Hver diagnostisk run er efterfølges af en begynder og slutter kommentar, så jeg er i stand til at gruppere det på den måde, men jeg har problemer med at få alt i 1 linje.

Typiske data:

Diags begynde.
Ti 17 marts 18:07:34 EDT 2009

PASS: (123) Power Check
.
.
[flere data]
Diags ende.
Diags begynde.
Ti 17 marts 19:09:22 EDT 2009

FAIL: (123) Power Check
.
Beskrivelse: Spænding klemme
.
. [mere manglende data detaljer]
.
Diags ende.


Jeg ønsker, at tidsstemplet testresultatet (for 123 test)


Jeg var i stand til at bruge awk at komme tæt, men jeg kan ikke helt få det.

awk '/ Diags begynde / (getline; print); (if ($ 2 \u003d\u003d "(123)") print $ 1, $ 2, $ 3, $ 4)'

Det giver mig:

Mon Mar 16 11:37:07 EDT 2009
PASS: (123) Power Check
Mon Mar 16 12:31:10 EDT 2009
PASS: (123) Power Check
Tue Mar 17 01:30:54 EDT 2009
** FAIL: (123) Power Check
Tue Mar 17 03:08:16 EDT 2009
PASS: (123) Power Check



Hvad jeg prøver at få er:
Mon Mar 16 11:37:07 EDT 2009 PASS: (123) Power Check
Mon Mar 16 12:31:10 EDT 2009 PASS: (123) Power Check
Tue Mar 17 01:30:54 EDT 2009 ** FAIL: (123) Power Check
Tue Mar 17 03:08:16 EDT 2009 PASS: (123) Power Check


Også, jeg leder efter en måde at bare trække oplysninger for en bestemt tidsramme (for eksempel den aktuelle dato - 7 dage), men jeg vil bekymre sig om det senere .. baby skridt ...

Systemet er Unix (HP-UX), så awk, perlEller sed er muligheder.

Tak for enhver hjælp ..

Paul
  #2 (permalink)  
Old 03-17-2009
daptal daptal is offline
Registreret Bruger
  
 

Join Date: Mar 2009
Stillinger: 60
#! / usr / bin /perl -w

brug strenge;

open (FH, 'txt');
my $ fb \u003d 0;
my @ str;
while (my $ line \u003d <FH>) (
chomp ($ line);
if ($ line \u003d ~ m / Diags begynder /) (
$ fb \u003d 1;
)
if ($ fb & &! ($ line \u003d ~ m / Diags begynder / | | $ line \u003d ~ m / Diags udgangen /)) (
push @ str, $ line;
)
if ($ line \u003d ~ m / Diags udgangen /) (
my $ x \u003d join "", @ str;
print "$ x \ n";
@ str \u003d ();
$ fb \u003d 0;
)
)

Prøv dette

Skål

Senest redigeret af daptal; 03-17-2009 kl 11:36 PM.. Årsag: output
  #3 (permalink)  
Old 03-18-2009
PMM pmm is offline
Registreret Bruger
  
 

Join Date: Dec 2008
Stillinger: 50
Følgende på dit awk script - brug printf:

Code:
awk '/Diags begin/{getline;printf};{if ($2=="(123)") print ","$1,$2,$3,$4}'
  #4 (permalink)  
Old 03-30-2009
BecTech BecTech is offline
Registreret Bruger
  
 

Join Date: Mar 2009
Stillinger: 2
ok, tak for de gode ideer .. efter nogle hacking og afprøvning jeg endelig fik den udgang i et brugbart format ved hjælp awk.

Jeg har outputted resultaterne til en ASCII-fil i en kommasepareret format ..
mit output fil kaldes tstres.txt
og typiske linjer i filen ser sådan ud:

TSTR01, Mar 29 21:29:17 EDT 2009 PASS:, Power Check
TSTR01 Mar 30 00:54:55 EDT 2009 PASS:, Power Check
TSTR01 Mar 30 08:31:31 EDT 2009 ** FAIL:, Power Check
TSTR02, Mar 07 14:41:08 EST 2009, PASS:, Power Check
TSTR02, Mar 07 21:46:33 EST 2009, PASS:, Power Check

Hvad er den nemmeste måde at tage denne datafil og output det til en HTML-tabel?

Min plan er at få scriptet køres i et cron-job, og jeg bliver nødt til at gøre, er at se HTML-side.
Closed Thread

Bogmærker

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er
Smilies er
[IMG] koden er
HTML-koden er Slukket
Trackbacks er
Pingbacks er
Refbacks er




Alle tidspunkter er GMT -4. Den tid er nu 04:07 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0