本地PowerShell相当于UNIX diff和补丁

作为脚本的一部分,我有一个需要dynamic修补文件的要求。

为了使脚本更具可读性,我想以类似于UNIX“diff”和“patch”的方式来实现它。 在标准的UNIX系统上,diff可以生成一个特殊格式的文本文件,表示两个文件之间的差异。 这可能会被“修补程序”连同要修改的文件一起使用,以便以简洁明了的方式生成已更改的文件。

看来,在PowerShell中没有直接的方法来做到这一点。 我见过的选项是使用多行正则expression式 – 这是很难build立和解释,消耗整个文件,并逐行处理它或编码我想在脚本中的新文件作为Base64string和简单地解码到目标文件。

虽然比较对象看起来好像它可以做一些事情来生成一个适当的差异对象似乎没有简单的方法来使用比较对象的输出应用到一个string数组的变化。

Compare-Object是最接近diff东西,并没有等同于内置到PowerShell中的patch 。 如果你需要这个功能,我建议使用diffpatch的Windows端口。