Linux 在两个不同的文件中显示重复的行
我有两个文件,我想显示重复行。我试过这个,但不起作用:Linux 在两个不同的文件中显示重复的行,linux,bash,Linux,Bash,我有两个文件,我想显示重复行。我试过这个,但不起作用: cat id1.txt |读取id时;dogrep“$id”id2.txt;完成 我想知道是否有其他方法可以显示文件中的重复行。 我的两个文件都包含ID列表。 谢谢。文件排序了吗?它们能分类吗 如果已排序: comm -12 id1.txt id2.txt 如果未排序,但使用bash4.x: comm -12 <(sort id1.txt) <(sort id2.txt) 这将查找出现在id2.txt中的id1.txt中的单
cat id1.txt |读取id时;dogrep“$id”id2.txt;完成
我想知道是否有其他方法可以显示文件中的重复行。
我的两个文件都包含ID列表。
谢谢。文件排序了吗?它们能分类吗 如果已排序:
comm -12 id1.txt id2.txt
如果未排序,但使用bash
4.x:
comm -12 <(sort id1.txt) <(sort id2.txt)
这将查找出现在
id2.txt
中的id1.txt
中的单词。这里唯一的问题是确保ID1
与包含1
的每个ID不匹配。某些版本的中可用的-w
或-x
选项将在此处工作。您可以使用comm
命令:
sort id1.txt > id1.txt.sorted
sort id2.txt > id2.txt.sorted
comm -12 id1.txt.sorted id2.txt.sorted
如果要在一个命令中执行此操作:
comm -12 <(sort id1.txt) <(sort id2.txt)
comm-12如果通过检测重复,您指的是两个文件中存在的打印行(或一个文件中的重复行),则可以使用uniq
:
$ cat file1 file2 | sort | uniq -d
使用awk将节省您的时间
awk 'FNR==NR{lines[$0]=1;next} $0 in lines' id1.txt id2.txt
按ID复制还是按整行复制?添加一些示例数据会有所帮助。任何一种方法都有效。如果你知道两种方法都很好。谢谢
awk 'FNR==NR{lines[$0]=1;next} $0 in lines' id1.txt id2.txt