我想从2个未排序的文件(比如file1和file2)中找到非唯一的行。我必须为它运行3个命令。排序2个文件并在其上应用命令
排序文件1> file1_sort
排序文件2> file2_sort
通讯-3 file1_sort file2_sort
我可以不用做临时文件,并在一个单一的命令?
感谢,
我想从2个未排序的文件(比如file1和file2)中找到非唯一的行。我必须为它运行3个命令。排序2个文件并在其上应用命令
排序文件1> file1_sort
排序文件2> file2_sort
通讯-3 file1_sort file2_sort
我可以不用做临时文件,并在一个单一的命令?
感谢,
您的描述不符你的命令。你说你想要非独特的线条,但有comm -3
,这将删除非唯一的线条。
sort file1 file2 | uniq -d
sort file1 file2 | uniq -u
第一行给出了非唯一行(即在file1和file2中都有的行)。第二行为您提供了唯一的行(即仅出现在file1或file2中但不是两者的行)。
comm -3 <(sort file1) <(sort file2)
如果你有兴趣在非唯一的行试试这个:
cat file1 file2 | sort | uniq -c | sort -n
你根本不需要排序。
awk 'NR==FNR{a[$0]=1}NR>FNR{if($0 in a)print $0}' file1 file2 > result.file
+1。值得注意的是,进程替换不是标准的(并不是所有* Bourne *类型的shell都可用)。 –