当サイトの記事にはプロモーションが含まれています。

Windows PowerShellでdiffを使いこなす!初心者でもわかる差分比較の基本と応用

パソコンパソコン・スマホ教室
スポンサーリンク

PowerShellを使って、2つのファイルやテキストの違いを比較したいとき、どうすればよいのでしょうか?UNIXの`diff`コマンドに慣れている方も多いかもしれませんが、Windows環境では少し勝手が違います。今回は、PowerShellでのdiff操作を初心者の方にもわかりやすく解説します。

スポンサーリンク

PowerShellのdiffとは?

Windowsのイメージ

Windowsのイメージ

まず、PowerShellでのdiffに相当するコマンドは、`Compare-Object`です。実際、`diff`コマンドは`Compare-Object`のエイリアス(別名)として用意されています。

powershell
diff (Get-Content "ファイル1.txt") (Get-Content "ファイル2.txt")

このコマンドを実行すると、2つのファイルの内容を比較し、異なる行を表示してくれます。

基本的な使い方

例えば、以下のような2つのファイルがあるとします。

ファイル1.txt:


apple
banana
cherry

ファイル2.txt:


apple
blueberry
cherry

この2つのファイルを比較するには、次のように入力します。

powershell
diff (Get-Content "ファイル1.txt") (Get-Content "ファイル2.txt")

出力結果は以下のようになります。


InputObject SideIndicator
-- -
blueberry =>
banana <=
  • `<=`は、ファイル1.txtにのみ存在する行を示します。
  • `=>`は、ファイル2.txtにのみ存在する行を示します。

オプションを使って表示をカスタマイズ

`Compare-Object`には、表示をカスタマイズするためのオプションがいくつかあります。

  • `-IncludeEqual`: 両方のファイルに共通する行も表示します。
  • `-ExcludeDifferent`: 異なる行を除外し、共通する行のみを表示します。

例えば、両方のファイルに共通する行も含めて表示したい場合は、次のようにします。

powershell
diff (Get-Content "ファイル1.txt") (Get-Content "ファイル2.txt") -IncludeEqual

出力結果は以下のようになります。


InputObject SideIndicator
-- -
apple ==
cherry ==
blueberry =>
banana <=

* `==`は、両方のファイルに共通する行を示します。

実際の活用例

例えば、CSVファイルの内容を比較したい場合、次のようにします。

powershell
$baseFile = Get-Content "BaseFile.csv"
$compFile = Get-Content "CompFile.csv"
diff $baseFile $compFile -IncludeEqual

このようにすることで、2つのCSVファイルの内容を比較し、差分や共通点を簡単に確認できます。

よくある質問や疑問

Q1: `diff`コマンドと`Compare-Object`コマンドの違いは何ですか?

実際、`diff`は`Compare-Object`のエイリアス(別名)です。つまり、`diff`と入力しても、内部的には`Compare-Object`が実行されます。どちらを使っても結果は同じです。

Q2: 出力結果の`SideIndicator`とは何ですか?

`SideIndicator`は、比較した2つのオブジェクトのどちらにその行が存在するかを示す指標です。`<=`は左側(最初のファイル)、`=>`は右側(2番目のファイル)、`==`は両方のファイルに共通する行を示します。

Q3: ファイルの行番号を表示する方法はありますか?

はい、`Compare-Object`の結果に行番号を追加するには、`Select-Object`を使用して`ReadCount`プロパティを表示することができます。例えば、次のようにします。

powershell
diff (Get-Content "ファイル1.txt") (Get-Content "ファイル2.txt") | Select-Object @{Name='LineNumber';Expression={$_.InputObject.ReadCount}},

これにより、各行の行番号も確認できるようになります。

まとめ

PowerShellを使うことで、Windows環境でも簡単にファイルの差分を比較することができます。特に、`Compare-Object`コマンドは、テキストファイルだけでなく、配列やオブジェクトの比較にも利用できる強力なツールです。初心者の方でも、基本的な使い方をマスターすれば、さまざまな場面で活用できるようになるでしょう。

この記事を書いた人
この記事を書いた人

企業の情報システム部門で10年以上、PC・アカウント・社内ネットワーク・Microsoft 365/Google Workspace運用を担当。年間数百件の問い合わせ対応(PC不調、メール送受信、Excel/Word資料、Teams会議、スマホ連携など)を通じて、初心者がつまずくポイントを「再現→原因切り分け→最短解決」の手順に落とし込んできました

現場や身近で実際に起きたトラブルをベースに、手順だけでなく「なぜそうなるか」「失敗しやすい落とし穴」「安全な設定(セキュリティ)」まで含めて解説します。

uri uriをフォローする
スポンサーリンク
よかったらシェアしてね! /
uri uriをフォローする

コメント

タイトルとURLをコピーしました