我有几个列表如下:
LIST1
chr10 NM_000141
chr10 NM_000188
chr10 NM_000235
chr10 NM_000278
chr10 NM_000281
chr10 NM_000314
chr10 NM_000375
chr10 NM_000392
chr10 NM_000399
chr10 NM_000417
列表2
chr10 NM_000235
chr10 NM_000278
chr10 NM_000281
chr10 NM_000314
chr10 NM_000392
chr10 NM_000399
chr10 NM_000609
chr10 NM_000681
chr10 NM_000684
chr10 NM_000698
项目list3
chr10 NM_000235
chr10 NM_000188
chr10 NM_000278
chr10 NM_000314
chr10 NM_000399
chr10 NM_000609
chr10 NM_000684
chr10 NM_000818
chr10 NM_000872
chr10 NM_000917
我的问题是,如何使用bash查找所有3个列表共享的行? (比如这里很容易注意到chr10 NM_000235
是所有三个人共享的)
THX
答案 0 :(得分:1)
使用comm命令
$ comm /path/to/file1/ /path/to/file2
$ comm -1 /path/to/file1/ /path/to/file2
$ comm -2 /path/to/file1/ /path/to/file2
$ comm -3 /path/to/file1/ /path/to/file2
其中
-1 : suppress lines unique to FILE1
-2 : suppress lines unique to FILE2
-3 : suppress lines that appear in both files
首先比较两个文件并将结果保存为“temp”。 (如果“temp”为空,则无需与第3个文件进行比较)。然后将temp与第三个文件进行比较。
我还提供了一个简短教程here的链接。