Also ich versuche, eine ziemlich langweilige Datenerfassung aus Hunderten von verschiedenen Protokolldateien zu automatisieren. Das folgende Skript:Tweaking awk zum Drucken verschiedener Dinge, wenn ein regulärer Ausdruck passt oder nicht
awk '/Loop/ { printf $4, }' log*weak*"$factor"x
wird für die Linie suchen, die „Loop Zeit von $ Zeit“, sagen und drucken Sie die Zeit
Der Fall, den ich mit jetzt bin versucht, obwohl zu beschäftigen, ist, wenn es waren Laufzeitfehler und das Protokoll wurde nie geschrieben. Das heißt, die Protokolldatei ist vorhanden, enthält jedoch keinen Text. Das Problem ist, dass das obige Skript nur das Protokoll überspringen wird. Ich möchte, dass es ein Leerzeichen ausgibt (um die aus diesem Grund erstellte CSV einfacher auszurichten).
Also gibt es eine Möglichkeit, $ 4 (die Zeit) zu drucken, wenn/Loop/übereinstimmt, aber "," wenn nicht?
Ihre Dateien enthalten also höchstens eine Zeile, die mit "Loop" übereinstimmt? – Mat
Ja, das Programm verwendet eine Vorlage, die nur einmal "Loop" hat. Es kann kein Problem feststellen und gibt die Zeit aus dieser Zeile aus. Wenn jedoch "Loop" nicht vorhanden ist, wird nichts ausgegeben. Ich möchte, dass etwas ausgedruckt wird, damit ich auf dem CSV sehen kann, dass dieser Test erneut ausgeführt werden muss. – user1209326