The UNIX and Linux Forums  
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.

Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
grep'ing een bestand tot een bepaalde boodschap verschijnt pallak7 Programmeren en Shell Scripting 3 04-23-2009 11:48
grep'ing voor specifieke directories, en het gebruik van de productie te verplaatsen van bestanden JayC89 Programmeren en Shell Scripting 1 12-06-2008 03:37
Sneller een shell script (find, grep en een lus) Dave Stockdale UNIX voor Dummies Questions & Answers 8 08-11-2008 04:36
Het versnellen van de verwerking van een dossier dlam Programmeren en Shell Scripting 4 07-19-2008 12:47
bespoediging van de compilatie op SUN Solaris omgeving swamymns Programmeren en Shell Scripting 2 07-12-2006 12:06

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 04-21-2009
elinenbe elinenbe is offline
Geregistreerde gebruiker
  
 

Join Date: december 2008
Posten: 8
Question grep'ing en sed'ing brokken in bash ... hulp nodig over de bespoediging van een log parser.

Ik heb een bestand dat wordt 20 tot 80 + MB groot is dat een bepaalde soort van log bestand.

Het logs een van onze processen en dit proces is multi-threaded. Daarom is de log-bestand is een soort van een puinhoop. Hier is een voorbeeld:

De logfile ziet er als volgt: "Datum Tijd - Thread ID - Details", en een nieuw bestand wordt aangemaakt voor elke dag
Citaat:
20090409 000122 - BD0 - Bestel 123 sessie beginnen
20090409 000122 - BD0 - Verwerking 1
20090409 000122 - BD0 - Meer Verwerking
20090409 000123 - EF0 - Bestel 234 sessie beginnen
20090409 000124 - EF0 - Verwerking
20090409 000124 - BD0 - Verwerking 2
20090409 000125 - BD0 - Meer Verwerking
20090409 000125 - EF0 - Verwerking
20090409 000125 - DD1 - Cancel 345 sessie beginnen
20090409 000125 - DD1 - Verwerking
20090409 000126 - DD1 - Verwerking 2
20090409 000126 - BD0 - Bestel 123 afgesloten
20090409 000127 - 11F - Query 543 sessie beginnen
20090409 000127 - 11F - Verwerking
..
..
20090409 000135 - 11F - Query 543 afgesloten
..
20090409 000140 - EF0 - Bestel 234 afgesloten
..
..
..
20090409 000143 - DD1 - 345 stijl afsluiten
Nu, hier is waar het wordt om een pijn ... Ik moet trek de lijnen van "Starting Session" in "Einde Sessie" voor elke Thread-ID, en deze naar de afzonderlijke bestanden dumpen. ECHTER, de Thread ID kan gedupliceerd in de loop van een dag - maar meestal niet voor vele uren.

Een sessie kan duren van 30 seconden tot 4 minuten of zo (~ 1200 lijnen) in de logfile, en er kan maximaal 20 gelijktijdige sessies.

Nu heb ik iets dat werkt - hoewel heel langzaam. Ik eindigen Grepping en sedding het dossier over en voorbij. Wanneer het bestand wordt groot, duurt het een enorme hoeveelheid en tijd. Ik hoop dat iemand hier me kan helpen dit te optimaliseren. Indien mogelijk, zou ik willen gebruiken bash.

Bedankt,
Eric

Hier is de code die ik heb die werkt, maar is _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
    ....
Dit geeft mij een aantal bestanden, dat het gebruik van het voorbeeld hierboven log zou ontstaan zoals hieronder weergegeven:
Citaat:
file: session.BD0.Order.123
20090409 000122 - BD0 - Bestel 123 sessie beginnen
20090409 000122 - BD0 - Verwerking 1
20090409 000122 - BD0 - Meer Verwerking
20090409 000124 - BD0 - Verwerking 2
20090409 000125 - BD0 - Meer Verwerking
20090409 000126 - BD0 - Bestel 123 afgesloten

file: session.DD1.Cancel.345
20090409 000125 - DD1 - Cancel 345 sessie beginnen
20090409 000125 - DD1 - Verwerking
20090409 000126 - DD1 - Verwerking 2
..
..
..
20090409 000143 - DD1 - 345 stijl afsluiten

file: session.11F.Query.543
20090409 000127 - 11F - Query 543 sessie beginnen
20090409 000127 - 11F - Verwerking
..
..
20090409 000135 - 11F - Query 543 afgesloten

file: session.EF0.Order.234
20090409 000123 - EF0 - Bestel 234 sessie beginnen
20090409 000124 - EF0 - Verwerking
20090409 000125 - EF0 - Verwerking
20090409 000140 - EF0 - Bestel 234 afgesloten
 

Bladwijzers

Labels
bash, grep, sed

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 04:42 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0