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