The UNIX and Linux Forums  


Go Back   Die UNIX-und Linux-Foren > Top Foren > Shell Programmierung und Scripting
.
Google unix.com



Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier.

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
grep'ing eine Datei bis zu einer bestimmten Meldung pallak7 Shell Programmierung und Scripting 3 04-23-2009 12:48 PM
grep'ing für bestimmte Verzeichnisse, und mit dem Ausgang zum Verschieben von Dateien JayC89 Shell Programmierung und Scripting 1 12-06-2008 03:37 AM
Beschleunigung eines Shell-Script (find, grep und einer for-Schleife) Dave Stockdale UNIX for Dummies Questions & Answers 8 08-11-2008 05:36 AM
Beschleunigung der Bearbeitung einer Datei dlam Shell Programmierung und Scripting 4 07-19-2008 01:47 PM
Beschleunigung der Zusammenstellung auf SUN Solaris-Umgebung swamymns Shell Programmierung und Scripting 2 07-12-2006 01:06 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 Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 04-21-2009
elinenbe elinenbe is offline
Registrierte Nutzer
  
 

Join Date: Dezember 2008
Beiträge: 8
Question grep'ing und sed'ing Chunks in bash ... Brauchen Sie Hilfe über die Beschleunigung ein Protokoll-Parser.

Ich habe eine Datei, die sich auf 20 - 80 + MB groß ist, dass eine bestimmte Art von Log-Datei.

Es Protokolle eines unserer Prozesse, und dieser Prozess ist multi-threaded. Deshalb ist die Log-Datei ist eine Art Messe. Hier ein Beispiel:

Das Logfile sieht wie folgt aus: "DATE TIME - Thread-ID - Details", und eine neue Datei erstellt für jeden Tag
Zitat:
20090409 000122 - BD0 - 123 Bestell-Start-Sitzung
20090409 000122 - BD0 - VERARBEITUNG 1.
20090409 000122 - BD0 - Mehr Processing
20090409 000123 - EF0 - 234 Bestell-Start-Sitzung
20090409 000124 - EF0 - Verarbeitung
20090409 000124 - BD0 - Verarbeitung 2
20090409 000125 - BD0 - Mehr Processing
20090409 000125 - EF0 - Verarbeitung
20090409 000125 - DD1 - Stil ab 345 Session
20090409 000125 - DD1 - Verarbeitung
20090409 000126 - DD1 - Verarbeitung 2
20090409 000126 - BD0 - 123 Bestell-heruntergefahren
20090409 000127 - 11F - 543 Query Session beginnen
20090409 000127 - 11F - Verarbeitung
..
..
20090409 000135 - 11F - Query 543 heruntergefahren
..
20090409 000140 - EF0 - 234 Bestell-heruntergefahren
..
..
..
20090409 000143 - DD1 - Stornieren 345 heruntergefahren
Nun, hier ist, wo er sich als Schmerz ... Ich muss Ziehen Sie die Zeilen von "Start Session" auf "Beenden Session" für jeden Thread-ID, und diese Dump-Dateien zu trennen. JEDOCH, die Thread-ID kann dupliziert im Laufe eines Tages - nicht aber in der Regel für viele Stunden.

Eine Sitzung kann von 30 Sekunden bis 4 Minuten oder so (~ 1200 Zeilen) in die Logdatei, und es kann bis zu 20 gleichzeitige Sitzungen.

Nun gut, ich habe etwas, das funktioniert - wenn auch recht langsam. Ich am Ende Grepping und sedding die Datei über und über. Wenn die Datei groß ist, dauert es eine große Menge an Zeit. Ich hoffe, dass hier jemand kann mir helfen, diese zu optimieren. Wenn möglich, möchte ich nutzen bash.

Danke,
Eric

Hier ist der Code Ich habe das funktioniert, ist aber _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
    ....

Dies gibt mir eine Reihe von Dateien, die mit den oben genannten Beispiel würde der Registrierung erstellt werden, wie unten dargestellt:
Zitat:
Datei: session.BD0.Order.123
20090409 000122 - BD0 - 123 Bestell-Start-Sitzung
20090409 000122 - BD0 - VERARBEITUNG 1.
20090409 000122 - BD0 - Mehr Processing
20090409 000124 - BD0 - Verarbeitung 2
20090409 000125 - BD0 - Mehr Processing
20090409 000126 - BD0 - 123 Bestell-heruntergefahren

Datei: session.DD1.Cancel.345
20090409 000125 - DD1 - Stil ab 345 Session
20090409 000125 - DD1 - Verarbeitung
20090409 000126 - DD1 - Verarbeitung 2
..
..
..
20090409 000143 - DD1 - Stornieren 345 heruntergefahren

Datei: session.11F.Query.543
20090409 000127 - 11F - 543 Query Session beginnen
20090409 000127 - 11F - Verarbeitung
..
..
20090409 000135 - 11F - Query 543 heruntergefahren

Datei: session.EF0.Order.234
20090409 000123 - EF0 - 234 Bestell-Start-Sitzung
20090409 000124 - EF0 - Verarbeitung
20090409 000125 - EF0 - Verarbeitung
20090409 000140 - EF0 - 234 Bestell-heruntergefahren
  #2 (permalink)  
Old 04-21-2009
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Join Date: Feb 2007
Posts: 4342
Der Annahme, dass die erste Zeile einer Sitzung endet mit "Start-Sitzung" Sie können versuchen, diese (nicht getestet):


Code:
awk '{
  !a[$4]{a[$4]=$4; n[$4]="session."$4"."$6"."$7}
  a[$4]{print > n[$4]}
' file

Verwenden Sie nawk oder / usr/xpg4/bin/awk auf Solaris, wenn Sie Fehler.

Grüße
  #3 (permalink)  
Old 04-21-2009
elinenbe elinenbe is offline
Registrierte Nutzer
  
 

Join Date: Dezember 2008
Beiträge: 8
Tut mir leid, ich hätte mehr sein. Die Sitzung beginnt alle Zeilen mit etwas wie:

20090409 000122 - BD0 - 123 Bestell-Start-Sitzung mit 12 Client-Port 34
20090409 000123 - EF0 - 234 Bestell-Start-Sitzung mit Client-347-Port 38
...

Und sowohl die Client-und Hafen sind dynamische Werte.

Ja, ich bin immer Fehler - ich bin mit dieser unter Cygwin, so dass ich nicht über einen einfachen Zugang zu nawk.
  #4 (permalink)  
Old 04-21-2009
devtakh devtakh is offline
Registrierte Nutzer
  
 

Join Date: Oct 2007
Ort: Bangalore
Beiträge: 514
Versuchen Sie, diese --
$ 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 (prev! ~ $ 4) (txt \u003d "Session." $ 4 "." $ 6 "." $ 7; printf ( "% s \ n% s", txt, $ 0); prev \u003d $ 4) else (print $ 0; prev \u003d $ 4)) '

wird so etwas wie diese --

session.11F.Processing.
20090409 000127 - 11F - Processing20090409 000127 - 11F - Verarbeitung
20090409 000127 - 11F - 543 Query Session beginnen
session.BD0.More.Processing
20090409 000122 - BD0 - Mehr Processing20090409 000125 - BD0 - Mehr Processing
20090409 000126 - BD0 - 123 Bestell-heruntergefahren
20090409 000122 - BD0 - 123 Bestell-Start-Sitzung
20090409 000122 - BD0 - VERARBEITUNG 1.
20090409 000124 - BD0 - Verarbeitung 2
session.DD1.Cancel.345
20090409 000125 - DD1 - Stornieren 345 ab session20090409 000125 - DD1 - Verarbeitung
20090409 000126 - DD1 - Verarbeitung 2
session.EF0.Order.234
20090409 000123 - EF0 - Bestell-234 ab session20090409 000124 - EF0 - Verarbeitung
20090409 000125 - EF0 - Verarbeitung


Prost,
Devaraj Takhellambam
  #5 (permalink)  
Old 04-21-2009
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Join Date: Feb 2007
Posts: 4342
Versuchen Sie dieses:


Code:
awk '
{if !($4 in a){a[$4]=$4; n[$4]="session."$4"."$6"."$7}}
{if ($4 in a) {print > n[$4]}}
' file

Grüße
Closed Thread

Lesezeichen

Tags
bash, grep, sed

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 02:19 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0