我有一个包含如下行的文本文件:
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
要仅检查重复行,请使用-d
uniq 选项。这将仅显示重复的行,如果没有,则不会显示任何内容:
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