我有两个文件
>vi cc4
163489921 ENSG00000145416
163490721 ENSG00000145416
163493030 ENSG00000145416
163494582 ENSG00000145416
163498263 ENSG00000145416
163506833 ENSG00000145416
163510223 ENSG00000145416
...
>vi bed_chr_4.bed
chr4 171975321 171975322 rs230 0 -
chr4 10204223 10204224 rs231 0 +
chr4 184363210 184363211 rs232 0 -
chr4 39547490 39547491 rs529 0 +
chr4 109740780 163489921 rs551 0 -
chr4 25929702 25929703 rs554 0 +
chr4 17624034 17624035 rs555 0 +
...
我想处理cc4的第一列和bed_chr_4.bed的第三列,并打印出bed_chr_4.bed的匹配行以及匹配的cc4的第二列。我要为该示例获取的输出将是:
chr4 109740780 163489921 rs551 0 - ENSG00000145416
我尝试过:
awk 'NR==FNR{a[$1]=$1;next}a[$3]{print $0}' cc4 bed_chr_4.bed >outfile
但是我从bed_chr_4.bed仅获得6列匹配项,而不是从cc4获得第二列,在这种情况下为:ENSG00000145416
我只得到这个:
chr4 109740780 163489921 rs551 0 -
答案 0 :(得分:0)
您快到了。问题是您正在将operator()
分配给lambda
。
请尝试:
$1
准确地说,它依赖于cc4的第二个字段具有一个值的假设 评估为正确。也许更安全地说:
a[$1]