根据第 1 列匹配将 csv 文件中的行追加到另一个文件

根据第 1 列匹配将 csv 文件中的行追加到另一个文件

我有 2 个 .csv 文件,file1.csv 和 file2.csv。假设 file2.csv 中的一行与 file1.csv 中的一行具有相同的第一个字段。我想要 file1.csv 中的整行替换 file2.csv 中的整行。我尝试使用脚本删除 file2 中的行并添加 file1 中的行。我尝试 awk file2 中不包含匹配项的行,然后从 file1 添加但失败。

文件1.csv:

1,2,3
2,3,4
3,4,5

文件2.csv

6,7,8
7,8,9
1,9,0

期望的结果:

6,7,8
7,8,9
1,2,3

答案1

对于您发布的简单输入文件:

$ awk -F, 'NR==FNR {a[$1]=$0; next} $1 in a {$0=a[$1]} 1' file1.csv file2.csv
6,7,8
7,8,9
1,2,3

请注意,一般来说,CSV 格式允许使用带引号的嵌入分隔符和其他可能使简单的 Awk 脚本不适合的讨厌内容

相关内容