我有2个档案。如果file1和file2的字段1、2、4和5匹配,那么我要在输出文件中一个接一个地打印file1和file2的整行。
文件1:
sc2/80 20 . A T 86 F=5;U=4
sc2/60 55 . G T 76 F=5;U=4
sc2/68 20 . T C 71 F=5;U=4
sc2/24 24 . T G 31 F=5;U=4
文件2:
sc2/99 84 . C G 61 F=5;U=4
sc2/80 20 . A T 30 F=5;U=4
sc2/60 40 . G T 76 F=5;U=4
sc2/30 20 . T C 71 F=5;U=4
sc2/24 24 . T G 91 F=5;U=4
预期产量:
sc2/80 20 . A T 86 F=5;U=4
sc2/80 20 . A T 30 F=5;U=4
sc2/24 24 . T G 31 F=5;U=4
sc2/24 24 . T G 91 F=5;U=4
我是该领域的新手,感谢您的帮助。
您可以使用多维数组:
awk 'FNR==NR{a[$1,$2,$4,$5]=$0;next}{if(b=a[$1,$2,$4,$5]){print b;print}}' file1 file2
FNR
(记录的文件号)等于NR
awk处理第一个文件时的时间。
a[$1,$2]=$0
与a[$1 SUBSEP $2]=$0
或相同a[$1"\034"$2]=$0
,并且($1,$2)in a
与($1 SUBSEP $2)in a
或相同($1"\034"$2)in a
。
您也可以替换if(b=a[$1,$2,$4,$5]){print b;print}
为if(($1,$2,$4,$5)in a){print a[$1,$2,$4,$5];print}
。如果!("index" in a)
,a["index"]
就像a["index"]=""
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句