2. Feld aus einem Datensatz filtern und dann uniq für die Ausgabe verwenden

374
Fyyz

Ich habe einen Datensatz, der so aussieht:

AAAAA 11111 Data1 AAAAA 11111 Data2 AAAAA 11111 Data3 AAAAA 11112 Data4 AAAAA 11112 Data5 AAAAA 11112 Data6 AAAAA 11112 Data7 AAAAA 11113 Data8 AAAAA 11114 Data9 

Und so weiter. Ich möchte nach dem 2. Feld filtern und dann eine Uniq ausführen, um nur den ersten Eintrag zu ziehen. In diesem Fall möchte ich die Ausgabe wie folgt:

AAAAA 11111 Data1 AAAAA 11112 Data4 AAAAA 11113 Data8 AAAAA 11114 Data9 

Das scheint ziemlich einfach zu sein, aber die Methode rutscht mir einfach aus. Irgendeine Hilfe?

0

3 Antworten auf die Frage

1
choroba

Sie können sortdie Arbeit erledigen:

sort -k2,2 -u 

-k2,2bedeutet nur in der 2. Spalte zu arbeiten, -ubedeutet einzigartig.

0
glenn jackman

Es gibt ein idiomatisches Stück Ahnung, um es zu tun:

awk '!seen[$2]++' file 

Drucken Sie die Zeile nur aus, wenn der Wert in der 2. Spalte zum ersten Mal angezeigt wird

0
vembutech

Sie können den folgenden Befehl verwenden, um das Problem zu lösen

sort new.txt | rev | uniq -s 6 | rev 

Die Ausgabe der Datei ist wie folgt

Hoffe das hilft