我有两个文件,它们的行如下:
档案一:
TCONS_00000007 ENSMUST00000044158 gene:ENSMUSG00000041560 433/463 0.0 364.0
TCONS_00000009 ENSMUST00000044158 gene:ENSMUSG00000041560 1051/1122 0.0 890.0
TCONS_00000212 ENSMUST00000112323 gene:ENSMUSG00000032582 458/475 0.0 420.0
TCONS_00000636 ENSMUST00000061242 gene:ENSMUSG00000048076 1694/1751 0.0 1571.0
TCONS_00000636 ENSMUST00000163300 gene:ENSMUSG00000048076 1658/1713 0.0 1539.0
文件 B:
chr1 4675000 4675009 TCONS_00000007
chr1 4677953 4678274 TCONS_00000008
chr1 4677956 4679079 TCONS_00000009
chr1 43944821 43946606 TCONS_00000636
编辑:文件 B 中的第 4 列将是唯一的。文件 A 中的第 1 列不一定是。
我想做的是输出一个文件,这样它只会保留 A 上的第 1 列和 B 上的第 4 列匹配的行。允许重复。(所以在上面的例子中,我希望输出看起来像这样):
chr1 4675000 4675009 TCONS_00000007 ENSMUST00000044158 gene:ENSMUSG00000041560
chr1 43944821 43946606 TCONS_00000636 ENSMUST00000061242 gene:ENSMUSG00000048076
chr1 43944821 43946606 TCONS_00000636 ENSMUST00000163300 gene:ENSMUSG00000048076
所以我尝试使用 awk 来做到这一点......我被卡住了。
FNR==NR{ ### script.awk
array[$4]++
next
}
{
if ($1 in array){
print $1,$2,$3...
}
}
awk -f script.awk fileB fileA > fileC
我遇到的麻烦是打印部分正常工作。如您所见,这样做会保留我想要的 fileA 中的行,但我想不出一种方法来获取我也想要的 fileB 的 $1、$2、$3 列(显然输入 $1、$2、 3 美元不起作用)。我能做些什么?