awkを使用して2つのファイルを2つの列にリンクしますが、列番号は異なります。

awkを使用して2つのファイルを2つの列にリンクしますが、列番号は異なります。

2つのファイルがあり、awkを使用して最初のファイルの$ 1、$ 2と2番目のファイルの$ 1、$ 8を関連付ける必要があります。

ファイル1:

111,123abc,eee,ttt,yyy
222,234bcd,ttt,yyy,333

ファイル2:

111, hhhh, eeee, rere,, 23, 2014, 123abc

222,jjkj,7878,uhjj,1,45,2013,234bcd

333,aaa,hhh,jjjj,2,78,590,567acd

出力:

111,123abc,hhhh,eeee,rere,,23,2014
222,234bcd,jjkj,7878,uhjj,1,45,2013

答え1

努力する:

$ awk -F, -v OFS=, 'NR==FNR{a[$1,$2]=1; next} ($1,$8) in a {print $1,$8,$2,$3,$4,$5,$6,$7}' file1 file2

これは作る:

111,123abc,hhh,eeee,rere,,23,2014,123abc
222,234bcd,jjkj,7878,uhjj,1,45,2013,234bcd

最初の列には8つの列があり、2番目の列には9つの列があるため、これは出力とまったく同じではありません。誤字だと思います:-)

答え2

例に示すように、ファイルが結合フィールド(フィールド#1)に基づいてソートされている場合は、次のjoinコマンドを使用できます。

join -t, -o 1.1,1.2,2.3,2.4,2.5,2.6,2.7,2.8 file1 file2

関連情報