GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Benachbarte doppelte Zeilen entfernen, während die Reihenfolge beibehalten wird?

Ich habe eine Datei mit einer Spalte mit Namen, die sich jeweils mehrmals wiederholen. Ich möchte jede Wiederholung zu einer zusammenfassen, während alle anderen Wiederholungen desselben Namens beibehalten werden, die nicht an andere Wiederholungen desselben Namens angrenzen.

Z.B. Ich möchte die linke Seite auf die rechte Seite drehen:

Golgb1    Golgb1    
Golgb1    Akna
Golgb1    Spata20
Golgb1    Golgb1
Golgb1    Akna
Akna
Akna
Akna
Spata20
Spata20
Spata20
Golgb1
Golgb1
Golgb1
Akna
Akna
Akna

Folgendes habe ich verwendet:perl -ne 'print if ++$k{$_}==1' file.txt > file2.txt
Diese Methode behält jedoch nur einen Vertreter von links (d. h. Golb1 und Akna werden nicht wiederholt).

Gibt es eine Möglichkeit, eindeutige Namen für jeden Block beizubehalten, während Namen beibehalten werden, die sich in mehreren, nicht benachbarten Blöcken wiederholen?

Akzeptierte Antwort:

uniq wird dies für Sie tun:

$ uniq inputfile
Golgb1
Akna
Spata20
Golgb1
Akna

Linux
  1. Wie entferne ich doppelte Zeilen in einer Textdatei?

  2. Wie entferne ich Duplikate in der .bash_history, um die Reihenfolge beizubehalten?

  3. Doppelte Felder in einer bestimmten Spalte entfernen?

  4. Diff Wo Linien meistens gleich, aber außer Betrieb sind?

  5. 7 Beispiele für Uniq-Befehle unter Linux zum Entfernen doppelter Zeilen aus einer Datei

5 Möglichkeiten, die Anzahl der Zeilen in einer Datei zu zählen

Die While-Schleife in Shell-Skripten

Befehl grpck – Entfernen Sie beschädigte oder doppelte Einträge in den Dateien /etc/group und /etc/gshadow.

Entfernen Sie effizient die letzten beiden Zeilen einer extrem großen Textdatei

Was ist die Standardreihenfolge der Linux-Sortierung?

Ändern Sie die Reihenfolge der Zeilen in einer Datei