我目前有两个文件,看起来像这样:
文件一:
2R 101 1:0:0:14:0:0 0:1:0:34:0:0 0:3:0:62:0:0 0:0:0:11:0:0 .02312
2R 201 0:2:0:24:0:0 0:0:0:44:0:0 0:0:0:15:0:0 0:0:0:22:0:0 .02312
2L 301 0:4:0:24:0:0 0:0:0:61:0:0 0:0:0:17:0:0 0:0:0:54:2:0 .02312
3R 551 0:2:0:64:0:1 0:1:0:67:0:0 0:0:0:22:0:0 0:0:0:31:1:0 .02312
3R 651 0:2:0:64:0:1 0:1:0:67:0:0 0:0:0:22:0:0 0:0:0:31:1:0 .02312
X 1312 0:0:3:24:0:0 0:5:0:65:0:0 0:0:0:55:0:0 0:0:0:14:0:0 .02312
X 5342 0:0:3:24:0:0 0:5:0:65:0:0 0:0:0:55:0:0 0:0:0:14:0:0 .02312
文件2:
2R 201
3R 551
X 5342
我想要做的是从文件 1 中提取所有行,其中前两列的条目与文件 2 中的行匹配。因此,基于此示例,我希望我的输出文件如下所示:
输出文件:
2R 201 0:2:0:24:0:0 0:0:0:44:0:0 0:0:0:15:0:0 0:0:0:22:0:0 .02312
3R 551 0:2:0:64:0:1 0:1:0:67:0:0 0:0:0:22:0:0 0:0:0:31:1:0 .02312
X 5342 0:0:3:24:0:0 0:5:0:65:0:0 0:0:0:55:0:0 0:0:0:14:0:0 .02312
答案1
假设文件 2 是A
,数据文件(文件 1)是b
awk 'FILENAME == "A" { remember[$1 $2]=1 ;}
FILENAME != "A" { if ( $1 $2 in remember ) print ; } ' A b
这会产生
2R 201 0:2:0:24:0:0 0:0:0:44:0:0 0:0:0:15:0:0 0:0:0:22:0:0 .02312
3R 551 0:2:0:64:0:1 0:1:0:67:0:0 0:0:0:22:0:0 0:0:0:31:1:0 .02312
X 5342 0:0:3:24:0:0 0:5:0:65:0:0 0:0:0:55:0:0 0:0:0:14:0:0 .02312