同様の列と一意の列を持つ2つのファイルがあります。同様の内容の最初の3つの列を比較し、一致するかどうか、それぞれ独自の列を印刷したいと思います。
ファイル1:
A cat pizza 34 24 56
A dog tomato 304 959 030
B bird grape 4.4 939 33
C snake broccoli 89 28 273
ファイル2:
A cat pizza 55 85 328
B dog tomato 404 56 32
C snake sandwich 384 34 75
使用すべきこと
ファイル3:
A cat pizza 34 24 56 55 85 328
頑張ってきた
awk 'NR==FNR {c[$1$2$3]++;next}
c[$1$2$3] > 0 {print $0}'
しかし、一致するものはありません。
答え1
私は次のことをします。
function join(start, end, sep, str, i) {
if (!sep) sep = OFS
str = $start
for (i = start + 1; i <= end; i++) str = str sep $i
return str
}
{ key = $1 OFS $2 OFS $3 }
NR == FNR { f1[key] = join(4, NF); next }
key in f1 { print key, f1[key], join(4, NF) }
次に実行
awk -f script.awk file1 file2