次のような行のファイルが2つあります。
ファイルA:
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は機能しません)。私に何ができる?