gpt4 book ai didi

linux - 比较2个设置文件并替换差异

转载 作者:太空宇宙 更新时间:2023-11-04 04:43:25 25 4
gpt4 key购买 nike

我有 2 个带有设置的文件:

file1.txt    and   file2.txt


A=1 A=2
B=3 B=3
C=5 C=4
D=6 .
. E=7

我正在寻找将 file1.txt 的值替换为 file2.txt 的差异值的最佳方法,因此 file1.txt 如下所示:

文件1.txt:

A=2       
B=3
C=4
D=6
E=7

目前我没有编写任何代码,但我想到的唯一方法是编写一个 bash 脚本来区分两个文件(作为位置参数提供),并使用 sed 替换不匹配的字符串。类似的事情:

./diffreplace.bash file1.txt file2.txt > NEWfile1.txt

我想知道是否存在更优雅的东西?

最佳答案

以下所有解决方案都可能会更改分配的顺序。我以为这样就可以了。

惰性解决方案

如果您以某种允许覆盖的方式使用这些分配,那么您可以简单地将 file2 附加到 file1 的末尾。当您执行 result 时,所有旧值都将被新值覆盖。

cat old new > result

稍微好一点的解决方案

扩展之前的方法,您可以迭代结果的行,并且对于每个变量,仅保留最后一个赋值:

cat new old |
awk -F= '{if (a[$1]!="x") {print $0; a[$1]=x}}'

替代解决方案

使用join合并两个文件,然后使用cut过滤掉第一个文件中的值。对文件进行排序后,使用

join -t= -a1 -a2 new old | cut -d= -f1,2 

如果没有,请使用

join -t= -a1 -a2 <(sort new) <(sort old) |
cut -d= -f1,2

关于linux - 比较2个设置文件并替换差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53281528/

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