![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
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 |
|
||||
|
#! / 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 |
|
||||
|
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. |