我有 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 脚本不适合的讨厌内容