共通列を使用した2つのファイルのマージ

共通列を使用した2つのファイルのマージ

2つのファイルがあります。

ファイル1は次のようになります。

burnj01,Joe Burns
steves02,Santosh Steve

ファイル2は次のようになります。

burnj01,0001
burnj01,0002
burnj01,0010
burnj,0100
burnj01,2000
steves02,2048
steves02,2049
steves02,2091

私は次のファイル3が欲しい:

burnj01,Joe Burns,0001
burnj01,Joe Burns,0002
burnj01,Joe Burns,0010
burnj01,Joe Burns,0100
burnj01,Joe Burns,2000
steves02,Santosh Steve,2048
steves02,Santosh Steve,2049
steves02,Santosh Steve,2091

最初のファイルのcol1を使用して2つのファイルを結合し、一致する場合は、File2の列2の値をFile1の最後の列に追加したいと思います。

私はこれを試しました:

$ awk 'FNR==NR{a[$1]=$2;next} {print $1,$2,a[$1]}' file2 file1 > file3

しかし、これはうまくいきません。どうやってこれを達成できますか?

ベストアンサー1

フィールド区切り文字を指定しFSOFSそれを出力フィールド区切り文字として使用する必要があります。

awk 'BEGIN        { FS=OFS="," }
     NR==FNR      { saving[$1]=$2; next }
    ($1 in saving){ print $1, saving[$1], $2 }' file1  file2

おすすめ記事