【发布时间】:2019-01-09 08:26:15
【问题描述】:
我有两个文件
>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 的第 1 列和 bed_chr_4.bed 的第 3 列进行匹配,并打印来自 bed_chr_4.bed 的匹配行以及来自 cc4 的匹配的第 2 列。我想为这个样本得到的输出是:
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 -
【问题讨论】:
-
您需要使用 awk 还是可以在脚本中使用其他工具(即 grep)?