2016-07-04 10 views
0

Ich habe eine Liste wie dieseEntfernen doppelte Zeilen (nur erster Teil) aus einer Datei

ABC|Hello1 
ABC|Hello2 
ABC|Hello3 
DEF|Test 
GHJ|Blabla1 
GHJ|Blabla2 

und ich möchte es dies sein:

ABC|Hello1 
DEF|Test 
GHJ|Blabla1 

so dass ich die Duplikate entfernen möge in jede Zeile vor dem: | und nur den ersten dort lassen.

+0

Notepad ++ ist keine Programmiersprache ... – Chisko

+0

In welcher Sprache verwenden Sie? – Chisko

+0

Möchten Sie sagen, dass diese "duplizierten" Zeilen fortlaufend sind? Alle ABC-Linien gehen ineinander über? Wenn ja, können Sie '^ (([^ | \ n] + \ |). *) (?: \ R \ 2. *) +' -> '\ 1' ersetzen in Notepad ++. –

Antwort

1

Ein einfacher Weg, unter Verwendung von hier awk

$ awk -F"|" '!seen[$1]++ {print $0}' file 
ABC|Hello1 
DEF|Test 
GHJ|Blabla1 

Der Trick ist, die entsprechende Feldseparator "|" in diesem Fall einzustellen, nach dem die einzelnen Spalten spaltenweise mit $1 beginnend zugegriffen werden kann. In dieser Antwort führe ich ein eindeutiges Array seen und drucke die Zeile nur, wenn der Wert von $1 nicht vorher gesehen wird.

Verwandte Themen