AWKを使用して他のファイルの値に基づいてファイルを更新する

AWKを使用して他のファイルの値に基づいてファイルを更新する

2つのファイルfile1.csv(20列410k行)とdata.csv(4列1800行)があります。私がやりたいことは、data.csvの最初の列がfile1.csvの2番目の列と一致する場合、file1.csvの最初の列をdata.csvの3番目の列の値で上書きすることです。一致するものがない場合は、既存の値を保持します。

このコマンドは一致する行をリストしますが、交換部品を正しくインポートしません。

awk -F"," 'BEGIN{OFS=","} {if (NR==FNR) {a[$1]=$3; next} if ($2 in a) print}' data.csv file1.csv
 > file3.csv

ありがとうございます!

答え1

私が正しく理解した場合は、次のようにします。

awk -F"," 'BEGIN{OFS=","} 
           {
            if (NR==FNR) {
                a[$1]=$3; 
                next
            } 
            if ($2 in a){
                $1=a[$2]
            }
             print
           }' data.csv file1.csv

ほぼすべて来ました。$1最初のファイルで保存した内容に設定し、その行を印刷するだけです。

関連情報