检查文件的所有行都是唯一的

检查文件的所有行都是唯一的

我有一个包含如下行的文本文件:

This is a thread  139737522087680
This is a thread  139737513694976
This is a thread  139737505302272
This is a thread  139737312270080
.
.
.
This is a thread  139737203164928
This is a thread  139737194772224
This is a thread  139737186379520

我怎样才能确定每条线的独特性?

笔记:目标是测试文件,而不是在存在重复行时修改它。

答案1

awk解决方案:

awk 'a[$0]++{print "dupes"; exit(1)}' file && echo "no dupes"

答案2

[ "$(wc -l < input)" -eq "$(sort -u input | wc -l)" ] && echo all unique

答案3

使用sort/ uniq

sort input.txt | uniq

要仅检查重复行,请使用-duniq 选项。这将仅显示重复的行,如果没有,则不会显示任何内容:

sort input.txt | uniq -d

答案4

我通常是sort文件,然后用于uniq计算重复项的数量,然后我sort再次在列表底部看到重复项。

我在您提供的示例中添加了一个重复项:

$ sort thread.file | uniq -c | sort
      1 This is a thread  139737186379520
      1 This is a thread  139737194772224
      1 This is a thread  139737203164928
      1 This is a thread  139737312270080
      1 This is a thread  139737513694976
      1 This is a thread  139737522087680
      2 This is a thread  139737505302272

由于我有一段时间没有阅读手册页uniq,因此我快速查找了任何替代方案。如果您只想查看重复项,则以下内容无需进行第二次排序:

$ sort thread.file | uniq -d
This is a thread  139737505302272

相关内容