1

文件 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,$2,$3]' file1.txt  - > output.txt

但它不工作

4

1 回答 1

2

awk请为您显示的示例尝试以下代码。用于zcat读取您的 .gz 文件,然后awk在使用 file1 完成读取后将其作为第二个输入传递给程序进行读取。

zcat your_file.gz | awk 'FNR==NR{arr[$1,$2,$5];next} (($1,$2,$3) in arr)' file1 -

OP尝试中的修复:

  • 在 file1 中创建数组时,您不需要增加数组的值。只要存在索引就足够了。
  • 在读取 file2 时检查条件(由 zcat 命令传递)只需检查数组中是否存在相应的字段,如果是,则打印该行。
于 2021-07-12T09:53:28.713 回答