问题描述
文件 1
3 1234581 A C rs123456
file2 压缩文件 .gz
1 1256781 rs987656 T C
3 1234581 rs123456 A C
22 1792471 rs928376 G T
3 1234581 rs123456 A C
我试过了
zcat file2.gz | awk 'NR==FNR{a[$1,$2,$5]++;next} a[$1,$3]' file1.txt - > output.txt
但它不起作用
解决方法
请尝试按照 awk
代码查看您显示的示例。使用 zcat
读取您的 .gz 文件,然后将其作为第二个输入传递给 awk
程序进行读取,在使用 file1 完成读取后。
zcat your_file.gz | awk 'FNR==NR{arr[$1,$2,$5];next} (($1,$3) in arr)' file1 -
OP 尝试中的修复:
- 在文件 1 中创建数组时不需要增加数组的值。只需在其中存在索引就足够了。
- 在读取 file2 时检查条件(由 zcat 命令传递),只需检查数组中是否存在相应字段,如果是,则打印该行。