Welchen sed / awk-Befehl kann ich verwenden? Nur sort -u
werden alle Instanzen entfernt
Eingang:
abc
abc
def
abc
abc
def
Erwartete Ausgabe:
abc
def
abc
def
quelle
Welchen sed / awk-Befehl kann ich verwenden? Nur sort -u
werden alle Instanzen entfernt
Eingang:
abc
abc
def
abc
abc
def
Erwartete Ausgabe:
abc
def
abc
def
Dafür ist der uniq
Standardbefehl gedacht.
uniq your-file
Beachten Sie, dass bei einigen uniq
Implementierungen wie GNU uniq
die erste Zeile einer Reihe von Zeilen gleich sortiert wird (wobei strcoll()
0 zurückgegeben wird) und nicht byteweise identisch ist (wobei memcmp()
oder strcmp()
0 zurückgegeben wird). Um einen Byte-zu-Byte-Vergleich unabhängig von der uniq
Implementierung zu erzwingen, können Sie für das Gebietsschema Folgendes erzwingen C
:
LC_ALL=C uniq your-file
Vim kann dies gut erreichen:
:g/\v^(.*\n)\1/d
Wenn Sie vim lieber als Befehlszeilentool verwenden möchten, können Sie dies wie folgt tun
vim file -c "g/\v^(.*\n)\1/d" -c "wq"
Auf diese Weise musst du dich später nicht mehr mit dem Verlassen von vim herumschlagen;)
Erläuterung:
:g/
In allen Zeilen, die diesem regulären Ausdruck entsprechen ...
\v^(.*\n)\1
Jede Zeile von selbst gefolgt ...
/d
Führen Sie den Befehl d elete aus (löschen Sie die aktuelle Zeile). Das -c "wq"
ist, um die Änderungen zu speichern und zu beenden.