使用 AWK 根据另一个文件中的值更新一个文件

使用 AWK 根据另一个文件中的值更新一个文件

我有两个文件 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为从第一个文件中保存的任何内容,然后打印该行。

相关内容