The UNIX and Linux Forums  


Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Hur man samman följande rader shivi707 UNIX Desktop for Dummies Frågor & Svar 1 01-12-2009 09:08
behovet av att slå samman två rader om linjen doesnt slutet med citationstecken laxmi131 UNIX för avancerade & Expertanvändare 9 10-27-2008 07:22
samman och visa 2 linjer som 1 med ett villkor för 2 linje? vithala Shell-programmering och Skript 7 07-11-2008 02:01
Behöver lösning samman och visa 2 linjer som 1 med ett villkor för 2 linje? vithala UNIX för avancerade & Expertanvändare 1 07-10-2008 02:27
Extrahera loggfil Entries harpdl Shell-programmering och Skript 2 07-13-2006 02:40

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ök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 03-17-2009
BecTech BecTech is offline
Registered User
  
 

Join Date: mars 2009
Inlägg: 2
Loggfil - utvinna vissa linjer till samman till 1 linje

Jag har en loggfil från automatiska diagnostiska körningar. Loggfilen bifogas varje gång en automatisk inloggning körs.
Jag vill bara dra vissa linjer från varje körning i loggfilen, och slå samman dem till 1 kommaavgränsad linje (för export till Excel eller en HTML-tabell).

Varje diagnostisk köra är parentes med ett påbörjande och avslutande kommentar så jag kan för att gruppera det så men jag har problem med att få allt till 1 rad.

Typiska data:

Diags börja.
Tis Mars 17 18:07:34 EDT 2009

PASS: (123) Power Check
.
.
[mer information]
Diags slut.
Diags börja.
Tis Mars 17 19:09:22 EDT 2009

FAIL: (123) Power Check
.
Beskrivning: Voltage clamp
.
. [mer underlåta data Detaljer]
.
Diags slut.


Jag vill tidsstämpel, testresultatet (för 123 prov)


Jag kunde använda awk att komma nära, men jag kan inte riktigt få det.

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

Detta ger 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
** Misslyckas: (123) Power Check
Tue Mar 17 03:08:16 EDT 2009
PASS: (123) Power Check



Vad jag försöker få är:
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, ** misslyckas: (123) Power Check
Tue Mar 17 03:08:16 EDT 2009 PASS: (123) Power Check


Också, jag letar efter ett sätt att bara dra informationen för en viss tid (till exempel dagens datum - 7 dagar) men jag ska oroa sig senare .. baby steg ...

Systemet är Unix (HP-UX) så awk, perlEller sed är alternativ.

Tack för all hjälp ..

Paul
  #2 (permalänk)  
Old 03-17-2009
daptal daptal is offline
Registered User
  
 

Join Date: mars 2009
Inlägg: 64
#! / usr / bin /perl -w

Använd strikt;

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

Testa här

Skål

Senast redigerad av daptal; 03-17-2009 at 11:36.. Orsak: output
  #3 (permalänk)  
Old 03-18-2009
PMM pmm is offline
Registered User
  
 

Join Date: Dec 2008
Inlägg: 50
Följande på din awk script - användning printf:


Kod:
awk '/Diags begin/{getline;printf};{if ($2=="(123)") print ","$1,$2,$3,$4}'

  #4 (permalänk)  
Old 03-30-2009
BecTech BecTech is offline
Registered User
  
 

Join Date: mars 2009
Inlägg: 2
Ok, tack för goda idéer .. efter några hacka och testa jag äntligen fick produktionen i ett användbart format med hjälp av awk.

Jag har outputted resultaten till en ASCII-fil i ett kommaseparerade format ..
Min utdatafilen är tstres.txt
och typiska raderna i filen ser ut så här:

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, ** misslyckas:, Power Check
TSTR02, Mar 07 14:41:08 EST 2009 PASS:, Power Check
TSTR02, Mar 07 21:46:33 EST 2009 PASS:, Power Check

Vad är det enklaste sättet att ta denna datafil och utgång till en HTML-tabell?

Min plan är att skriptet körs i ett cron-jobb och allt jag behöver göra är att visa HTML-sidan.
Closed Thread

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 09:41.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0