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