2012-04-30 8 views
1

My PowerShellの冒険が続きます...最終的にファイル操作といくつかの正規表現を使用してテキストをフォーマットした後、私は最終的に2つのテキストファイルを比較する必要があります。PowerShellのtxtファイルの比較が一致しない

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

問題: コンペアオブジェクトを使用し、2つの別々のテキスト上のコンテンツを取得比較結果が一致するものを示していないファイル。私は手動で両方と同じ文字列を見つけることができるので、これは間違っているという事実を知っています。各テキストファイル自体は、特定のID番号の複数のコピーが含まれていてもよいとfile2は、すべての出現を含むマスターリストである

GTD-LVOE-FS-0032

:テキストはそうのような構造のランダムなID番号ですID番号の

解決方法: 私はこれがわかっているので、いくつかの==結果を返すために、Compare-Objectと-includeequalが必要です。私が見落としているかもしれない書式設定の問題はありますか?ファイル内やファイル間に複数の同一の文字列が存在すると予想されるように、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またはメソッドがありますか?

+1

ファイルを見ずに伝えるのは難しいです。 –

+0

投稿を編集して、テストファイルの内容を表示しました。 File1とFile2には、これら4本の同じ行があります。これらの行は、各ドキュメント内および各ファイル間で同一です。私はPowerShellが比較のために4つの==を出力することを期待していました。 – Steve

答えて

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 == 
+0

OK、スクリプトを使用して動作します。元の投稿に投稿したスクリプトを見て、私のアプローチが間違っている理由を教えてもらえますか? CompareとCompare-Objectの違いを理解しているかどうかはわかりません。 – Steve

+0

compareはCompare-Objectのエイリアスにすぎません。両方を使用して同じように動作するはずです。 –

+0

非常に奇妙なことに...私はそれが$(GCパス)を使用していたかもしれないと思いますか? – Steve