Ich möchte Zeilen mit Zeitstempeln in einer Protokolldatei suchen (nicht alle Zeilen haben Zeitstempel) und ich möchte diese Zeitstempel auch behalten, damit ich die Zeitspanne sehen kann, die aktive Tag Nummer usw.grep passte Zeilen zu einer Datei und entsprach Strings zu einer anderen Datei
201 3083560 2013-10-21T13:57:55.334+0200 time|bootup
202 3083560 2013-10-21T13:57:55.334+0200 startup
204 3083579 2013-10-21T13:57:55.353+0200 system|device
205 3083579 2013-10-21T13:57:55.353+0200 system|manufacturer
206 3083579 2013-10-21T13:57:55.353+0200 system|model
ich die Befehle ausführen kann:
grep -P '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}[+-]\d{4}\t' usr.log > file1.txt
grep -Po '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}[+-]\d{4}\t' usr.log > file2.txt
Und meine Frage ist, kann ich grep nur einmal ausgeführt zu bekommen, was ich mit einigen Rohren? Das Muster bleibt gleich, also denke ich, dass grep mich einmal etwas retten könnte, da ich 30k individuelle Benutzerprotokolldateien habe.
* Es ist nützlich, die Registerkarte am Ende des Musters zu behalten, weil in einigen Zeilen Zeitwerte in der letzten Spalte sind, so dass ich \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}[+-]\d{4}\n
ausschließen muss.
* Meine Umgebung ist CentOS 7, grep (GNU) 2.20.
Vielen Dank!
Sie haben es nicht zweimal laufen, können Sie 'grep -oP' in der' usr.log' direkt. – Inian
Auch Ihre Regex '\ d {4} - \ d {2} - \ d {2} T \ d {2}: \ d {2} \ d {2} \. \ D {3} [+ -] \ d {4} \ t' oder '\ d {4} - \ d {2} - \ d {2} T \ d {2}: \ d {2} \ d {2}. \ d {3} [+ -] \ d {4} \ n' stimmt nicht mit den Zeilen in der Beispieleingabedatei überein – Inian
Vielen Dank! Ich habe vergessen, ein Extra hinzuzufügen: in das Muster. Jetzt habe ich es behoben. Aber wie kann es in einem Lauf gemacht werden? Ich möchte auch Datei1.txt behalten. – leoce