![]() |
|
|
Google unix.com
|
|||||||
| Foren | Registrieren | Forum-Regeln | Links | Alben | FAQ | Benutzerliste | Kalender | Suche | Die heutige Beiträge | Alle Foren als gelesen markieren |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Suche diesen Thread | Rate Thread | Anzeige-Modi |
|
|
|
||||
|
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:
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:
|
|
||||
|
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 |
|
||||
|
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. |
|
||||
|
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 |
![]() |
| Lesezeichen |
| Tags |
| bash, grep, sed |
| Thread Tools | Suche diesen Thread |
| Anzeige-Modi | Rate this thread |
|
|