我得到以下命令的两个不同结果。想知道这些命令之间的区别。 我想列出文件中的唯一行(删除重复项)。为了解决这个问题,我使用了以下命令。
sort -u filename
和
sort filename|uniq -u
我得到了两个不同的结果。有人可以解释这个区别。
也试过这个命令。除上述两项外,还得到了另一组新结果。
cat filename|uniq -u.
答案 0 :(得分:2)
我使用的文件:
zsh/6 31167 % cat do_sortowania
Marcin
Tomek
Marcin
Wojtek
Zosia
Zosia
Marcin
Krzysiek
使用sort:
zsh/6 31168 % sort -u do_sortowania
Krzysiek
Marcin
Tomek
Wojtek
Zosia
但使用sort + uniq:
zsh/6 31170 % sort do_sortowania|uniq -u
Krzysiek
Tomek
Wojtek
现在:两个答案: 短:
zsh/6 31171 % sort do_sortowania|uniq -c
1 Krzysiek
3 Marcin
1 Tomek
1 Wojtek
2 Zosia
长:
如您所见,quniq -u
仅返回仅出现一行的行:Krzysiek,Tomek,Wojtek。
Zosia和Marcin是3倍和2倍,所以uniq -u
省略了它们。
P.S。
zsh/6 31172 % cat do_sortowania|uniq -u
Marcin
Tomek
Marcin
Wojtek
Marcin
Krzysiek
因为,sort
应仅适用于已排序的文件,因此:
Marcin
Marcin
Tomek
将uniq
用于
Marcin
Tomek
但
Marcin
Tomek
Marcin
赢了,因为只对下一行进行排序比较,因为它相信文件已排序。
答案 1 :(得分:1)
在列表中按无重复条目排序:
sort -u filename
|该命令的管道输出是否为uniq,使用-u,仅打印唯一的行
sort filename|uniq -u
在大多数情况下,这是大多数用户的正确选项:
sort -u filename
关于排序的ubuntu信息:http://manpages.ubuntu.com/manpages/precise/en/man1/sort.1.html