2011-10-08 28 views
2

我想从2个未排序的文件(比如file1和file2)中找到非唯一的行。我必须为它运行3个命令。排序2个文件并在其上应用命令

排序文件1> file1_sort
排序文件2> file2_sort
通讯-3 file1_sort file2_sort

我可以不用做临时文件,并在一个单一的命令?

感谢,

回答

1

您的描述不符你的命令。你说你想要非独特的线条,但有comm -3,这将删除非唯一的线条。

sort file1 file2 | uniq -d 
sort file1 file2 | uniq -u 

第一行给出了非唯一行(即在file1和file2中都有的行)。第二行为您提供了唯一的行(即仅出现在file1或file2中但不是两者的行)。

4
comm -3 <(sort file1) <(sort file2) 
+1

+1。值得注意的是,进程替换不是标准的(并不是所有* Bourne *类型的shell都可用)。 –

0

如果你有兴趣在非唯一的行试试这个:

cat file1 file2 | sort | uniq -c | sort -n 
0

你根本不需要排序。

awk 'NR==FNR{a[$0]=1}NR>FNR{if($0 in a)print $0}' file1 file2 > result.file 
相关问题