我想在不使用排序命令的情况下将重复项重定向到另一个文件。
我试着使用下面的命令,但它不工作。
uniq -d sample.txt
它只在我给它作为"sort sample.txt | uniq -d
"时起作用,但是我想在不排序文件的情况下取出文件的重复项。还有别的办法吗?
您可以使用这个简单的awk
命令来完成:
awk 'a[$0]{print;next}{a[$0]=1}' sample.txt
这里,$0
=>当前正在处理的整行。如果a[$0]
已经设置,打印行(这是一个重复行)并继续next
行。如果设置了Else a[$0]
,那么下次同样的行(如果存在的话)将被视为重复的。
例子:
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[$0]{print;next}{a[$0]=1}' sample.txt
Line 1
Line 2
Line 7
Line 3