我知道diff -e
可以输出ed
脚本。我的理解是,ed
并sed
分享他们的方法,但这ed
是交互式的,并且sed
适用于流。
我想要做的是获取 的输出diff -e
(或其他 的调用diff
)并将其合并到 的调用中,sed
这样使用原始“之前”文件作为输入调用该命令会产生与diff
调用的“之后”文件等同的输出。我想将命令格式化为-e <BLERG>
传递给 的选项集合,sed
以避免必须将 ed/sed 脚本写入另一个文件。
我尝试了很多明显的混合方法,但没有得到想要的(甚至看起来不合理的)输出,我想我漏掉了一些总体的东西。这可能吗?
答案1
您可以坚持使用 ed:假设您想要比较 file1 和 file2,然后将更改应用于 file1 并写入名为 file1.b 的文件:
{ diff -e file1 file2; echo "w file1.b"; echo q; } | ed file1
现在,file2 和 file1.b 之间应该没有区别了:
$ diff file2 file1.b && echo "no diff"
no diff
答案2
diff
和随后对差异的应用在diff
不同的时间。因此,假设您有 的输出diff
,我将使用patch
:
diff -u 原始.html 新.html > 原始.补丁
然后在接收端:
curl -s http://someurl.com > original.html; patch < original.patch
这确实意味着将您的文件名设计得相同,因为它们包含在补丁文件中。