为什么sort -u从sort filename中给出不同的输出uniq -u?

时间:2014-10-05 15:13:07

标签: linux sorting cat uniq

我得到以下命令的两个不同结果。想知道这些命令之间的区别。 我想列出文件中的唯一行(删除重复项)。为了解决这个问题,我使用了以下命令。

sort -u filename

sort filename|uniq -u

我得到了两个不同的结果。有人可以解释这个区别。

也试过这个命令。除上述两项外,还得到了另一组新结果。

cat filename|uniq -u.

2 个答案:

答案 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