1

我的 PowerShell 冒险仍在继续……在最终弄清楚文件操作和一些正则表达式来格式化我的文本之后,我终于有了 2 个需要比较的文本文件。

Compare-Object $(Get-Content C:\File1.txt) $(Get-Content C:\File2.txt) -includeequal > C:\Results.txt

问题:在 2 个单独的文本文件上使用 Compare-Object 和 Get-Content 时,比较结果显示不匹配。我知道这是不正确的,因为我可以手动找到与两者相同的字符串。文本是一个随机的 ID 号,结构如下:

GTD-LVOE-FS-0032

每个文本文件本身可能包含特定 ID 号的多个副本,并且 File2 是包含所有出现的 ID 号的主列表。

解决方案:我希望带有–includeequal 的Compare-Object 返回一些== 结果,因为我知道是这种情况。是否有我可能忽略的格式问题导致此问题,或者当文件内和文件之间存在多个相同的字符串时,Compare-Object 是否无法像我预期的那样工作?

编辑:

作为测试,我创建了 2 个文本文件,每个文件包含以下内容。

GTD-LVOE-43-0021
GTD-LVOE-43-0021
GTD-LVOE-43-0021
GTD-LVOE-43-0021

我希望 Compare-Object 说这些文本文件是相同的,而是返回 File2 包含字符串。在我看来,问题在于 Compare-Object 在为比较创建的变量之一中处理相同的字符串。当需要比较的变量中有多个相同的字符串时,是否有另一种 CMDLET 或方​​法用于比较对象?

4

1 回答 1

1

对我有用(基于您发布的内容,file1 和 file2 的内容相同):

PS> compare (gc File1.txt) (gc File2.txt) -IncludeEqual | ft -a

InputObject      SideIndicator
-----------      -------------
GTD-LVOE-43-0021 ==
GTD-LVOE-43-0021 ==
GTD-LVOE-43-0021 ==
GTD-LVOE-43-0021 ==
于 2012-04-30T12:57:43.790 回答