我有两个文件 file1.csv (20 列 410k 行)和 data.csv (4 列 1800 行)。我想做的是,如果 data.csv 第一列与 file1.csv 第二列匹配,则用 data.csv 第三列中的值覆盖 file1.csv 中的第一列。如果没有匹配保留现有值...
此命令将列出匹配的行,但无法正确获取替换部分。
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
为从第一个文件中保存的任何内容,然后打印该行。