![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her. |
Mer UNIX og Linux Forum Emner Du kan finne nyttig
|
||||
| Tråd | Tråd startet | Forum | Svar | Siste innlegg |
| grep'ing en fil til en bestemt melding | pallak7 | Shell programmering og Skripting | 3 | 04-23-2009 12:48 |
| grep'ing for spesifikke kataloger og bruker output å flytte filer | JayC89 | Shell programmering og Skripting | 1 | 12-06-2008 03:37 |
| Påskynde en Shell Script (finne, grep og en for loop) | Dave Stockdale | UNIX for Dummies Spørsmål og svar | 8 | 08-11-2008 05:36 |
| Påskynde behandlingen en fil | dlam | Shell programmering og Skripting | 4 | 07-19-2008 01:47 |
| fartstoleranse opp kompilering på Sun Solaris miljø | swamymns | Shell programmering og Skripting | 2 | 07-12-2006 01:06 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
Jeg har en fil som er 20 til 80 + MB i størrelse som en bestemt type loggfil. Den logger en av våre prosesser og denne prosessen er flertrådet. Derfor er loggfilen er slags rot. Her er et eksempel: Den loggfilen ser slik ut: "Dato Tid - THREAD ID - detaljer", og en ny fil opprettes for hver dag Sitat:
En sesjon kan vare fra 30 sekunder til 4 minutter eller så (~ 1200 linjer) i loggfilen, og det kan være opptil 20 samtidige sesjoner. Nå har jeg noe som virker - men ganske langsomt. Jeg ender opp grepping og sedding filen over og over. Når filen blir stor, tar det en massiv tid. Jeg håper at noen her kan hjelpe meg optimalisere dette. Hvis mulig, vil jeg gjerne bruke bash. Takk, Eric Her er koden jeg har som fungerer, men er _slow_ Code:
if [[ -e "$log_file" ]]
then
echo "parsing: "$log_file
grep "starting session" $log_file | while read line
do
thread=`echo $line | cut -d' ' -f4`
sessiontype=`echo $line | cut -d' ' -f6`
sessionnumber=`echo $line | cut -d' ' -f7`
echo " first line of session: "${line:0:25}"..."
line2=`echo - $thread - $sessiontype $sessionnumber shutting down`
echo " last line of session: "${line2:0:25}"..."
sed -n "/$line/,/$line2/p" $log_file | grep " - $thread - ">session.$thread.$sessiontype.$sessionnumber
done
....
Dette gir meg en rekke filer, som ved eksempelvis å logge ovenfor vil bli opprettet som vist nedenfor: Sitat:
|
|
||||
|
Forutsatt at den første linjen i en økt avsluttes med "start session" kan du prøve denne (ikke testet): Code:
awk '{
!a[$4]{a[$4]=$4; n[$4]="session."$4"."$6"."$7}
a[$4]{print > n[$4]}
' file
Bruk nawk eller / usr/xpg4/bin/awk på Solaris hvis du får feil. Hilsen |
|
||||
|
Beklager, jeg skulle vært mer spesifikke. Den starter økten linjene ende med noe slikt som:
20090409 000122 - BD0 - 123 Bestill starter økten med klienten 12-port 34 20090409 000123 - EF0 - 234 Bestill starter økten med klienten 347 port 38 ... Og både klienten og porten er dynamiske verdier. Ja, jeg får feil - jeg kjører dette under Cygwin, så jeg har ikke lett tilgang til nawk. |
|
||||
|
prøv denne --
$ Sort-k 4 logfile | awk 'NR \u003d\u003d 1 (prev \u003d $ 4; txt \u003d "session." $ 4 »." $ 6 "." $ 7; printf ( "% s \ n% s", txt, $ 0); getliine) (if (forrige! ~ $ 4) (txt \u003d "session." $ 4 »." $ 6 "." $ 7; printf ( "% s \ n% s", txt, $ 0); prev \u003d $ 4) else (print $ 0; prev \u003d $ 4)) vil gi noe slikt -- session.11F.Processing. 20090409 000127 - 11F - Processing20090409 000127 - 11F - Processing 20090409 000127 - 11F - 543 Query starter økten session.BD0.More.Processing 20090409 000122 - BD0 - Flere Processing20090409 000125 - BD0 - Flere Processing 20090409 000126 - BD0 - 123 Bestill nedleggelse 20090409 000122 - BD0 - 123 Bestill starter økten 20090409 000122 - BD0 - 1 Processing 20090409 000124 - BD0 - 2 Processing session.DD1.Cancel.345 20090409 000125 - DD1 - 345 avbestille starter session20090409 000125 - DD1 - Processing 20090409 000126 - DD1 - 2 Processing session.EF0.Order.234 20090409 000123 - EF0 - 234 Bestill starter session20090409 000124 - EF0 - Processing 20090409 000125 - EF0 - Processing skål, Devaraj Takhellambam |
![]() |
| Hugseliste |
| Tags |
| bash, grep, sed |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|