2015-06-17 36 views
0

我有一个要求,可能将文件作为脚本的一部分进行动态补丁。本地PowerShell相当于UNIX差异和补丁

为了使想什么脚本正在做更易读我在类似于UNIX的“差异”和“补丁”的方式的方式来实现这一点。在标准UNIX系统上,diff可以生成一个特殊格式的文本文件,它表示两个文件之间的差异。这可能会被“修补程序”连同要修改的文件一起使用,以便以干净和直接的方式生成已更改的文件。

看来在PowerShell中没有直接的方法来做到这一点。我见过的选项是使用多行正则表达式 - 这是很难构建和解释,消耗整个文件并逐行处理它或编码我想在脚本中的新文件作为Base64字符串和只需将其解码为目标文件。

虽然比较-对象看起来好像可以做一些事来生成似乎是使用比较-对象的输出的变化应用到字符串数组没有简单的方法适当的DIFF对象。

+0

diff实用程序被称为'fc',也许你可以使用那个。这也有助于你的差异是二进制的,这样你可以调用'fc/b'来比较有问题的文件。 – Vesper

+0

Fc.exe是一个有用的提示 - 但它不能解决将输出(补丁)应用于原始文件以创建新文件的关键问题。 – user1383092

+0

比较对象将是这个明显的开始。您可以做的最好的事情是显示一些示例数据文件(几行)以及生成的文件应该是什么样子。 Unix不是我的强项,但我知道如果你展示一些样本,我可以提供帮助。 – Matt

回答

1

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