【发布时间】:2021-06-10 16:27:51
【问题描述】:
我有制表符分隔文件,文件文件 1 和文件 2。我想创建一个文件 3 子集行,其中包含文件 1 中的所有四列,匹配文件 2 中的第 1 列和第 2 列,file1 看起来像:
1 17626 A G
1 20184 G A
1 108826 C G
1 108929 G C
并且,file2 为:
1 17626
1 20184
我希望文件 3 中的输出如下所示
1 17626 A G
1 20184 G A
查看前面的问题,我尝试了以下代码:
awk -F '\t' 'NR==FNR{c[$1$2]++;next};c[$1$2]' file2 file1 > file3
awk -F '\t' 'NR==FNR{c[$1$2]++;next};c[$1$2] > 0' file2 file1 > file3
awk -F '\t' 'NR==FNR{a[$1$2]; next} FNR==1 || $1$2 in a' file2 file1 > file3
从以上两个命令,我得到一个空文件。而且,使用最后一个命令,我只得到一行输出,而不是预期的两行。
【问题讨论】:
-
至少你的最后一次试验工作正常,考虑到你用
FNR==1处理标题,$1$2 in a没有括号,$1$2应该是($1,$2)并且你不考虑\r行尾.
标签: awk