按列排序唯一 - 排序命令?

时间:2013-08-21 09:50:14

标签: linux bash shell unix sorting

我有这个文件:

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

我想这样排序,

hello 1
hi  3
world 1

问题是我只需要第1列中的第一个唯一项目。

我尝试了sort -k1 -u file.txt,但它没有按照我的预期运作。我该怎么做?

3 个答案:

答案 0 :(得分:21)

这可能对您有用:

sort -uk1,1 file

这仅对第一个字段上的文件进行排序,并根据第一个字段删除重复的行。

答案 1 :(得分:5)

根据第1列排序并提供唯一列表

排序-u -t:-k 1,1 test.txt

-t:=冒号是分隔符

-k 1,1 =基于第1列

根据第1列和第1列排序并提供唯一列表第3栏

排序-u -t:-k 1,1 -k 3,3 test.txt

-t:=冒号是分隔符

-k 1,1 3,3 =基于第1列和第1列。第3栏

答案 2 :(得分:3)

你可以把它传递给awk:

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