Linux-Befehl zum Entfernen der doppelten Zeilen, aber das erste Vorkommen beibehalten

766
user9371654

Ich habe eine Textdatei. Jede Zeile enthält eine Zeichenfolge. Einige Zeichenfolgen werden wiederholt. Ich möchte die Wiederholung entfernen, aber ich möchte das erste Vorkommen beibehalten. Zum Beispiel:

line1 line1 line2 line3 line4 line3 line5 

Sollte sein

line1 line2 line3 line4 line5 

Ich habe es versucht: sort file1 | uniq -u > file2aber das hat nicht geholfen. Es hat alle sich wiederholenden Zeichenketten entfernt, während das erste Vorkommen anwesend sein soll. Ich muss nicht sortieren. Entfernen Sie einfach die exakte Wiederholung einer Zeichenfolge in einer neuen Zeile, während Sie alles andere beibehalten.

1

2 Antworten auf die Frage

2
Kamil Maciorowski

Wenn Sie die Sortierung trotzdem zulassen, funktioniert dies:

sort | uniq 

-uwar die Quelle deiner Probleme, weil (von man 1 uniq):

-u, --unique
nur eindeutige Zeilen drucken

während standardmäßig:

Ohne Optionen werden übereinstimmende Zeilen mit dem ersten Vorkommen zusammengeführt.

0
agc

Spezialisierte Hilfsmittel, die eindeutige Zeilen drucken, ohne zu sortieren:

  1. uq.

  2. unique.

Siehe auch: Wie Sie nur die eindeutigen Ergebnisse erhalten, ohne Daten sortieren zu müssen? und Unix: Entfernen doppelter Zeilen ohne zu sortieren .