如何从 diff 创建 sed 命令行?

ipm*_*mcc 1 sed command-line

我知道diff -e可以输出ed脚本。我的理解是,edsed分享他们的方法,但这ed是交互式的,并且sed适用于流。

我想要做的是获取diff -e(或其他一些调用diff)的输出并将其转换为sed这样的调用,以便使用原始“之前”文件作为输入调用该命令会产生与来自“之后”文件的输出等效的输出diff调用。我想将命令格式化为-e <BLERG>传递给的选项集合,sed以避免将 ed/sed 脚本写入另一个文件。

我已经尝试了一堆明显的 mungings,但我没有得到想要的(甚至看起来合理的)输出,我想我错过了一些重要的东西。这可能吗?

gle*_*man 5

您可以坚持使用 ed: 假设您想比较 file1 和 file2,然后将更改应用于 file1 并写入名为 file1.b 的文件:

{ diff -e file1 file2; echo "w file1.b"; echo q; } | ed file1
Run Code Online (Sandbox Code Playgroud)

现在,file2 和 file1.b 之间应该没有区别了:

$ diff file2 file1.b && echo "no diff"
no diff
Run Code Online (Sandbox Code Playgroud)