是比较两个文件并将结果保存为 sed 脚本的方法吗?

Is way to compare two files and save the result as a sed script?

我有一个基本文件 base.txt 和两个继承自它的文件 A.txt 和 B.txt。我希望 base.txt 中 A.txt 中替换的所有 txt 应用到 B.txt。

diff -u base.txt A.txt | patch B.txt

使用 diff 你会明白 base.txtA.txt 之间的区别。

然后,使用 patch 将差异应用于文件 B.txt

您可以在 base.txt 中的文本成功替换 A.txt 时创建 sed 分支并打印,并将输出重定向到更改文件。然后遍历更改文件,将更改应用到 B.txt。

例如

IFS=$(echo -en "\n\b") && for a in $(< base.txt); do sed -in "s/${a}/something/;t a;b b;:a p;:b" A.txt >> change.txt; done

IFS=$(echo -en "\n\b") && for a in $(< change.txt); do sed -in "s/${a}/something/" B.txt; done

在第一个循环中,sed 使用打印命令 p 在与标签 :a 的匹配上分支,如果没有匹配,则逻辑会命中分支并跳过标签 :a 并在不打印的情况下退出。