以下に示すように、タブ区切りの 2 つのファイルがあります。
ファイル A
chr1 123 aa b c d
chr1 234 a b c d
chr1 345 aa b c d
chr1 456 a b c d
....
ファイルB
xxxx abcd chr1 123 aa c d e
yyyy defg chr1 345 aa e f g
...
「chr1」、「123」の2つの列に基づいて2つのファイルを結合し、ファイルBからファイルAに最初の2つの列を追加します。これは次を使用して行われます
awk 'NR==FNR{a[$3,$4]=$1OFS$2;next}{$7=a[$1,$2];print}' OFS='\t' fileb filea
出力:
chr1 123 aa b c d xxxx abcd
chr1 234 a b c d
chr1 345 aa b c d yyyy defg
chr1 456 a b c d
ただし、実際のデータでは fileb が大きすぎて、「6400 バイトのメモリを割り当てられません (メモリを割り当てられません)」というエラーが返されます。ファイルがより小さな部分で読み取られるように、誰かがこれを行う代替手段を提供できますか。