信不信由你,我在互联网上搜索了所有内容,但尚未在AWK中找到解决此问题的可行解决方案。
我有两个文件,A和B:
文件A:
chr1 pos1
chr1 pos2
chr2 pos1
chr2 pos2
文件B:
chr1 pos1
chr2 pos1
chr3 pos2
所需的输出:
chr1 pos1
chr2 pos1
我想加入这两个文件,以便基本上基于第一和第二列(而不仅仅是第一列)获得两个文件之间的交集。既然是这种情况,大多数简单的脚本将无法工作,并且加入似乎也不是一种选择。
有任何想法吗?
编辑:对不起,我没有提到有比我展示的更多的两列。我只在示例中显示了两个,因为我只对两个文件之间的前两列相同是很感兴趣的,其余数据并不重要(但是在文件中仍然重要)
最佳答案
哼,我的主意如下:
使用join
合并两个文件并使用awk进行更正
$ join A B
chr1 pos1 pos1
chr1 pos2 pos1
chr2 pos1 pos1
chr2 pos2 pos1
$ join A B | awk '{ if ($2==$3) printf("%s %s\n", $1, $2) }'
chr1 pos1 pos1
chr2 pos1 pos1
编辑:进行编辑后,联接解决方案仍然可以使用(带有选项),因此概念仍然正确(imo)。