uniq 命令未检测到重复行

fel*_*lix 0 unix linux bash shell uniq

我在使用 unix 命令时遇到了困难uniq。我有一个包含 ids 列表的文件,如下所示(输出head -5 list.txt):

IBNUKWG02JZU4E
IBNUKWG02JZULO
IBNUKWG02JZUMG
IBNUKWG02JZUZS
IBNUKWG02JZV0R
Run Code Online (Sandbox Code Playgroud)

这些文件包含619142行 ( cat list.txt | wc -l),并且包含重复项,例如,如果我运行命令(-c标志返回该行出现的次数)

cat list.txt | grep IBNUKWG02JZULO | uniq -c 
Run Code Online (Sandbox Code Playgroud)

它返回

  2 IBNUKWG02JZULO
Run Code Online (Sandbox Code Playgroud)

但如果我运行命令(-u标记为仅打印唯一行)

   cat list.txt | uniq -u | wc -l 
Run Code Online (Sandbox Code Playgroud)

它返回619142,就好像没有检测到重复行一样。这怎么可能 ?

tso*_*tso 6

在使用 uniq 之前先使用排序。

cat list.txt | sort | uniq -u | wc -l 
Run Code Online (Sandbox Code Playgroud)

  • 这里可以避免“cat”的无用使用,只需“sort list.txt |” uniq -c` 会很好 (2认同)