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に文字列が含まれていることを返します。問題は、比較用に作成された変数の1つ内で同一の文字列を処理する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 に答える