PowerShell文本文件比较未找到匹配项

时间:2012-04-30 04:45:22

标签: powershell

我的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返回一些==结果,因为我知道这是这种情况。是否存在我可能忽略的格式问题导致此问题或者比较对象无法正常工作,就像我期望文件内和文件之间存在多个相同的字符串一样?

编辑:

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

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

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

1 个答案:

答案 0 :(得分: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 ==