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
最初のファイルで保存した内容に設定し、その行を印刷するだけです。