File 我想在不使用sort命令的情况下将副本重定向到另一个文件中

File 我想在不使用sort命令的情况下将副本重定向到另一个文件中,file,sorting,unix,duplicates,File,Sorting,Unix,Duplicates,我想在不使用sort命令的情况下将副本重定向到另一个文件中 我已尝试使用以下命令,但无效 uniq -d sample.txt 仅当我将其命名为“sort sample.txt | uniq-d”时,它才起作用,但我希望在不排序文件的情况下取出文件的副本。 还有其他方法吗?您可以使用以下简单的awk命令完成此操作: awk 'a[$0]{print;next}{a[$0]=1}' sample.txt 这里,$0=>当前正在处理的完整行。如果a[$0]已设置,则打印该行(这是一个重复行)并转

我想在不使用sort命令的情况下将副本重定向到另一个文件中

我已尝试使用以下命令,但无效

uniq -d sample.txt
仅当我将其命名为“
sort sample.txt | uniq-d
”时,它才起作用,但我希望在不排序文件的情况下取出文件的副本。
还有其他方法吗?

您可以使用以下简单的
awk
命令完成此操作:

awk 'a[$0]{print;next}{a[$0]=1}' sample.txt
这里,
$0
=>当前正在处理的完整行。如果
a[$0]
已设置,则打印该行(这是一个重复行)并转至
下一行。否则将设置一个[$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

awk
编程可能会有所帮助。我会用PHP、Perl、Python、C#或其他什么东西来完成它……或者如果数据是有组织的,我会将其存储在一个能够在(…)上执行行数的数据库中。如果数据集很小,请使用SQLFIDLE。