我想在不使用排序命令的情况下将重复项重定向到另一个文件

I want to redirect the duplicates into another file without using sort command

我想在不使用排序命令的情况下将重复项重定向到另一个文件。

我试过使用以下命令,但没有用。

uniq -d sample.txt

它仅在我将其指定为“sort sample.txt | uniq -d”时有效,但我想在不对文件进行排序的情况下取出文件的重复项。 还有其他方法吗?

您可以使用这个简单的 awk 命令完成它:

awk 'a[[=10=]]{print;next}{a[[=10=]]=1}' sample.txt

此处,[=13=] => 当前正在处理的完整行。如果 a[[=14=]] 已经设置,打印该行(这是重复的行)并继续到 next 行。否则 a[[=14=]] 已设置,因此下次同一行(如果存在)将被视为重复。

示例:

AMD$ cat sample.txt
Line 1
Line 2
Line 3
Line 1
Line 4
Line 5
Line 2
Line 6
Line 7
Line 7
Line 8
Line 3
Line 9
Line 10
AMD$ awk 'a[[=11=]]{print;next}{a[[=11=]]=1}' sample.txt
Line 1
Line 2
Line 7
Line 3