我正在尝试通过以下方式将两个 csv 文件合并为一个文件。 第一个文件:包含所有数据。 第二个文件:包含更新的数据。
所以结果文件应该包含所有数据,行通过第二个文件数据修改..
例子:
file1:
1,Hello,123
2,Hello,456
3,Bye,789
file2:
1,Hello,123
3,Hello,789
4,Bye,345
resulted file:
1,Hello,123
2,Hello,456
3,Hello,789
4,Bye,345
应添加所有新条目,不应删除旧条目,应在结果中更新任何更新的条目。
我正在通过一些 shell 脚本寻找一些更简单的解决方案。
提前致谢。 :)
最佳答案
假设文件中的第一个元素是键,您可以像这样使用 awk
来做到这一点:
parse.awk
BEGIN { FS = OFS = "," }
FNR == NR {
h[$1] = $0
next
}
{ h[$1] = $0 }
END {
for(k in h)
print h[k]
}
像这样运行它:
awk -f parse.awk file1 file2
或者作为单行:
awk 'FNR==NR{h[$1]=$0;next} {h[$1]=$0}END{for(k in h)print h[k]}' FS=, OFS=, file1 file2
两种情况下的输出:
1,Hello,123
2,Hello,456
3,Hello,789
4,Bye,345
关于linux - 在linux中合并两个csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43479409/