Ich arbeite gerade an einem Projekt. Das Skript, das ich erstelle, benötigt zunächst zwei Argumente: eines ist ein eindeutiger Bezeichner und das andere ist für eine Protokolldatei (beides Zeichenfolgen). Jetzt habe ich den ersten Teil erledigt, nämlich die Analyse des eindeutigen Bezeichners. Aber der zweite Teil ist die Analyse eines bestimmten Zeichenfolgenabschnitts, der eine zufällig generierte Zeichenfolge aus Zahlen und Buchstaben ist.
Ich verwende eine awk
Anweisung, um diese zufällige Zeichenfolge zu erhalten, und habe überprüft, dass mein Ausdruck in Rubular korrekt ist. Aber wenn ich versuche, den Code mit mehr zu testen, wird nichts ausgegeben. Folgendes habe ich in die Befehlszeile eingegeben:
awk '/\s=\s[a-zA-Z0-9-]+/ {print }' ~/jlog/server.log | more
Folgendes steht in meinem Skript:
for j in $(cat ~/jlog/"$2"); do awk '/'"$1"'/\s=\s[a-zA-Z0-9-]+/ {print}'
Und hier ein Teil des Protokolls, das ich durchsehe:
2014-06-17 15:34:52,406 INFO [random.random.xxx.message.Random] Processed instance (1.2.840.113619.2.284.3.2013961368.890.1402186239.15
5/1.2.840.113619.2.80.1944071037.22604.1402323463.136) from [email protected] to Random_AE. AssociationID = 9eddb1b0-368e-4fb9-a684-44cc14be389c
Ich suche speziell nach dem Zufallscode nach der Association ID. Gibt es Vorschläge, wie ich die Ergebnisse anzeigen kann? Mir gehen die Ideen aus.
Antwort1
Bitte versuche
awk '$3=="INFO" && $(NF-2)=="AssociationID" && $(NF-1)=="=" { print $NF }' ~/jlog/server.log
Indem Sie den Namen der Protokolldatei direkt an übergeben, awk
können Sie auch die Verwendung von for
und vermeiden cat
.