gpt4 book ai didi

linux - 在linux中合​​并两个csv文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:39 25 4
gpt4 key购买 nike

我正在尝试通过以下方式将两个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com