Diese Frage / Antwort bietet einige gute Lösungen zum Löschen identischer Zeilen in einer Datei, funktioniert jedoch in meinem Fall nicht, da die ansonsten doppelten Zeilen einen Zeitstempel haben.
Ist es möglich, awk anzuweisen, die ersten 26 Zeichen einer Zeile bei der Ermittlung von Duplikaten zu ignorieren?
Beispiel:
[Fri Oct 31 20:27:05 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:10 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:13 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:16 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:21 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:22 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:23 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:24 2014] The Brown Cow Jumped Over The Moon
Würde werden
[Fri Oct 31 20:27:24 2014] The Brown Cow Jumped Over The Moon
(Beibehaltung des neuesten Zeitstempels)
text-processing
awk
duplicate
deduplication
ein Kodierer
quelle
quelle
Antworten:
Sie können nur
uniq
mit seiner-f
Option verwenden:Von
man uniq
:Tatsächlich wird die erste Zeile angezeigt:
Wenn das ein Problem ist, können Sie Folgendes tun:
oder wenn Sie
tac
nur Ihretail
Unterstützung haben-r
:quelle
quelle
Probier diese:
quelle
Eine
perl
Lösung:quelle
Man kann Macht nutzen von
vim
:Sehr leicht. Wenn Sie mehrere weitere Dateien haben (z. B. gedippte gedrehte Protokolle),
vim
werden diese ohne vorherige Dekomprimierung auf Ihrer Seite geöffnet, und Sie können den letzten Befehl durch Drücken von :und wiederholen ↑. Genau wie beim Wiederholen des letzten Befehls im Terminal.quelle