我有两个如下所示的文件,它们是制表符分隔的:
档案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
...
我想加入基于 2 列与“chr1”,“123”的两个文件,并将文件 B 中的前两列添加到文件 A。这是使用
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 字节的内存(无法分配内存)”。有人可以提供另一种方法来执行此操作,以便以较小的部分读取文件。