2013-08-21 9 views
5

mam ten plikSortowanie unikatowe według kolumny - polecenie sortowania?

hello 1 
hello 2 
world 1 
world 2 
hello 3 
hi 3 
hi 4 

chcę to rozwiązać tak, jak

hello 1 
hi 3 
world 1 

Chodzi o to, muszę tylko pierwszy wyjątkową pozycję w kolumnie 1.

Próbowałem sort -k1 -u file.txt ale nie działa tak, jak się spodziewam. Jak mam to zrobić?

+0

możliwy duplikat [Czy istnieje sposób na "uniq" według kolumny?] (http://stackoverflow.com/questions/1915636/is-there-a-way-to-uniq-by-column) –

Odpowiedz

20

To może pracować dla Ciebie:

sort -uk1,1 file 

ta sortuje plik tylko na pierwszym polu i usuwa zduplikowane linie oparte na pierwszym polu.

+0

Testowałem to i działa – Daniel

+1

+1 Bardzo ładne, różnica między' -k1' i '-k1,1' – anubhava

+2

Czy możesz to wyjaśnić? – Mari

3

Można rura go awk:

sort -k1 file | awk '!($1 in a){a[$1]; print}' 
hello 1 
hi 3 
world 1 
+1

Czy możesz wyjaśnić powyższe rozwiązanie? – Mari

+1

Komenda awk sprawdza, czy '$ 1' istnieje w tablicy' a'. Jeśli nie istnieje, drukuje całą linię i przesyła "$ 1" do tablicy "a". – anubhava

+0

Dlaczego sortowanie -k1 -u plik.txt nie działa? Zasadniczo tutaj sam sortujemy i usuwamy duplikaty oparte na pierwszej kolumnie, prawda? – Mari

5

Sortowanie i dają wyjątkowe listy na podstawie kolumny 1

rodzaju -u -t: -k 1,1 test.txt

-t: = jelita grubego jest SEPARATOR

-k 1,1 = podstawie kolumny 1

sortowania i dają wyjątkowe listy na podstawie kolumny 1 & kolumnie 3

rodzaj -u -t: -k -k 1,1 3,3 test.txt

-t: = jelita grubego jest separator

-k 1,1 3,3 = podstawie kolumny 1 & kolumna 3

Powiązane problemy