Entfernen Sie die Anzahl doppelter Zeilen basierend auf der Übereinstimmung vor dem ersten Komma

Entfernen Sie die Anzahl doppelter Zeilen basierend auf der Übereinstimmung vor dem ersten Komma

Ich habe großen Text auf Linux Centos 7 Server und ich möchte Zeilen entfernen, die vor dem ersten Komma übereinstimmen

Eingang:

112112112,00,00,00
110110,01,01,02
112112112,11,11,888
110110,99,88,8
410410,22,22,22

Ausgabe:

410410,22,22,22

Antwort1

Hier sind ein paar awkZwei-Durchgang-Lösungen. Der erste Durchgang speichert die Häufigkeit von Feld 1 in einem Array x. Der zweite Durchgang druckt eine Zeile, wenn xdie Häufigkeit von Feld 1 als 1 gemeldet wird.

awk -F, 'first_pass{x[$1]++; next}; x[$1] == 1' first_pass=1 file first_pass=0 file

awk -F, 'BEGIN{while ((getline<ARGV[1]) > 0)x[$1]++}; x[$1] == 1' file

Antwort2

Kurzes GNUdatamash+sedKombination:

datamash -sft',' -g1 count 1 <file | sed -n 's/,1$//p'

Der erste Prozess der obigen Pipeline zählt die Anzahl der Elemente in jeder Gruppe der ersten Feldwerte (gruppiert nach -g1) und fügt die resultierenden Zählungen als letztes Feld hinzu

verwandte Informationen