8

我有这个文件:

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了,但它没有像我预期的那样工作。我该怎么做?

4

3 回答 3

24

这可能对您有用:

sort -uk1,1 file

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

于 2013-08-21T10:21:18.547 回答
6

根据第 1 列排序并给出唯一列表

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

-t : = 冒号是分隔符

-k 1,1 = 基于第 1 列

根据第 1 列和第 3 列排序并给出唯一列表

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

-t : = 冒号是分隔符

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

于 2014-01-21T01:21:45.613 回答
3

您可以将其通过管道传输到 awk:

sort -k1 file | awk '!($1 in a){a[$1]; print}'
hello 1
hi    3
world 1
于 2013-08-21T09:55:34.057 回答