Ich habe eine Protokolldatei, die Ausführungsstartzeiten und Endzeiten verschiedener Threads enthält. Ich habe die Hälfte der Arbeit erledigt, aber ich brauche Hilfe, um die andere Hälfte zu beenden. Ich schrieb dieses Befehl-Wie finde ich das erste und letzte Vorkommen eines Feldes aus einer Protokolldatei?
cat 2017-05-15.log | grep 'Executing ETL' | tr -s ' ' | cut -f2,3,4,5,8 -d' ' | sort -k5 -n
, die die folgende Ausgabe erzeugt:
15 May 2017 03:43:40 696
15 May 2017 03:44:35 696
15 May 2017 03:45:02 696
15 May 2017 23:30:22 9502
15 May 2017 23:49:40 9502
15 May 2017 23:50:50 9502
15 May 2017 23:51:11 9502
15 May 2017 23:52:11 9502
15 May 2017 23:52:42 9502
15 May 2017 02:18:32 12795
15 May 2017 02:19:35 12795
15 May 2017 02:20:02 12795
15 May 2017 02:33:39 13674
15 May 2017 02:35:13 13674
15 May 2017 02:35:42 13674
15 May 2017 18:52:28 19143
15 May 2017 18:53:01 19143
15 May 2017 18:53:35 19143
15 May 2017 18:53:59 19143
15 May 2017 18:54:40 19143
Dieser Ausgang auf die Prozess-ID sortiert, die die letzte Spalte ist. Das erste Vorkommen jeder Prozess-ID ist die Startzeit dieses Prozesses, während das letzte Vorkommen die Endzeit derselben ist. Ich muss nur die erste (Startzeit) und die letzte (Endzeit) jedes Prozesses anzeigen. Wie folgt aus:
15 May 2017 03:43:40 696
15 May 2017 03:45:02 696
15 May 2017 23:30:22 9502
15 May 2017 23:52:42 9502
15 May 2017 02:18:32 12795
15 May 2017 02:20:02 12795
15 May 2017 02:33:39 13674
15 May 2017 02:35:42 13674
15 May 2017 18:52:28 19143
15 May 2017 18:54:40 19143
Die Anzahl der Einträge für jeden Prozess-ID wird nicht fixiert. Die Ausgabe muss nicht unbedingt in diesem Format vorliegen. Aber ich muss in der Lage sein, die Start- und Endzeiten jedes Prozesses deutlich zu sehen.
Wie ich in der Beschreibung gesagt, wird der Ausgang I in dem ersten Schritt erzeugt auf Prozess-ID (die 5. Spalte) sortiert. – RodrikTheReader
Was ist, wenn es nur einen Eintrag gibt? –