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
私はこの分野に初めてアクセスし、助けてくれてありがとう。
ベストアンサー1
多次元配列を使用できます。
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
or と同じでa[$1"\034"$2]=$0
、($1,$2)in a
or と同じです。($1 SUBSEP $2)in a
($1"\034"$2)in a
のように.ifif(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"]=""