LoginSignup
50

More than 5 years have passed since last update.

PowerShellで2つのファイルを比較する

Posted at

仕事で新しいCSVファイルと古いCSVファイルでどの部分が変わっているのかわからなかったので比較の方法を探してみました。PowerShellでもあるんですね。
この方法で比較することはできますが、出力する二つのファイルが大きく変わってしまっているとほとんどの部分が違うものとして出てくるので必ずしも有効なものとは限りません。

さて、PowerShellでは次のように入力します

PS> $A = Get-Content %新しいCSVファイル%
PS> $B = Get-Content %古いCSVファイル%
PS> Compare-Object $A $B

下記のような結果が返ってきました。適当に加工してあるものです。

InputObject                      SideIndicator
-----------                      -------------
6007,23                          =>
6008,23                          =>
6009,23                          =>
6011,23                          =>
6013,23                          =>
6049,21                          =>
6138,23                          =>
6160,21                          =>
6161,23                          =>
6162,23                          =>
6163,27                          =>
6164,24                          =>
2187,21                          =>
2198,21                          =>
2203,21                          =>
2206,21                          =>
2224,21                          =>
2045,30                          =>
8127,23                          <=
8128,23                          <=
8129,23                          <=
8131,23                          <=
8133,23                          <=
8414,21                          <=
8644,23                          <=
8646,21                          <=
8647,23                          <=
8648,23                          <=
8649,27                          <=
8650,24                          <=
3187,21                          <=
3198,21                          <=
3203,21                          <=
3206,21                          <=
3224,21                          <=
2045,24                          <=

古いファイルからなくなった行には「=>」、新しいファイルで追加された行には「<=」が表示されて、内容も出てきます。
これで新しいファイルで追加された内容がわかるので変更点を見落としにくくなります。
とはいえ画面に出ているだけではリストなども作れないので標準出力を適当なファイルにリダイレクトさせておくと良いかもしれません。

PS> Compare-Object $A $B > diff.txt

なんらかの事情で新旧で一致している行も表示したい場合には

PS> Compare-Object $A $B -IncludeEqual

とすると一致している行も表示され、SideIndicatorカラムには「==」が表示されるようになります。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
50