Po prostu zmień polecenie awk na kolumnę, którą chcesz wykonać, aby usunąć zduplikowane linie na podstawie (w twoim przypadku trzeciej kolumny):
awk '!seen[$3]++' filename
To polecenie mówi, awk
które wiersze mają zostać wydrukowane. Zmienna $3
zawiera całą zawartość kolumny 3, a nawiasy kwadratowe umożliwiają dostęp do tablicy. Tak więc dla każdej trzeciej kolumny wiersza w nazwie pliku węzeł nazwanej tablicy seen
jest zwiększany, a wiersz drukowany, jeśli zawartość tego węzła (kolumna3) nie była !
wcześniej ustawiona ( ).
Powyższe awk
polecenie będzie działać, jeśli kolumny w pliku wejściowym są rozdzielane między nimi space
lub Tab
między nimi, jeśli kolumny rozdzielane są czymś innym, musisz powiedzieć jej, aby przebudziła się z tą -F
opcją. Na przykład, jeśli wszystkie kolumny rozdzielone przecinkami ( ,
) i chcą usunąć linie na podstawie -F','
opcji użycia trzeciej kolumny .
awk -F',' '!seen[$3]++' filename
-u
co usunie tylko duplikaty linii , a nie duplikaty kluczy ... ale się mylę.