PowerShell(Compare-Object)


アニメ『ノラと皇女と野良猫ハート』

サクっと見れるところがいいです。めんどくさいところはすべてカット。いきなり主人公が猫になってる状態から始まります。4分もないので、待ち合わせのちょっとした暇な時とかに楽しめるアニメです。

猫ということで、catを使います。PowerShellのcatはGet-Contentコマンドレットのエイリアスですが、このcatとdiffを使ってファイルの比較をしたいと思います。
ちなみにdiff(Compare-Object)だけしか使わないとこのように、ファイル名に比較しかしません。

PS C:\Users\takk\aaa> diff file1.txt file2.txt

InputObject                                                 SideIndicator
-----------                                                 -------------
file2.txt                                                   =>
file1.txt                                                   <=


PS C:\Users\takk\aaa>

では2つファイルを用意します。

PS C:\Users\takk\aaa> 10001..10010 > file1.txt
PS C:\Users\takk\aaa> copy file1.txt file2.txt
PS C:\Users\takk\aaa>

差分を作りたいので、notepad等でファイルを適当に編集します。

PS C:\Users\takk\aaa> notepad file2.txt
PS C:\Users\takk\aaa>

このように編集しました。

PS C:\Users\takk\aaa> cat file2.txt
10001
10002
10003
10004
10305
10006
10407
10008
10509
10010
PS C:\Users\takk\aaa>

各ファイルをcatして内容を変数に格納します。

PS C:\Users\takk\aaa> $a=cat file1.txt
PS C:\Users\takk\aaa> $b=cat file2.txt
PS C:\Users\takk\aaa>

後は、変数をdiff(Compare-Object)すれば良いです。

PS C:\Users\takk\aaa> diff $a $b

InputObject                                                 SideIndicator
-----------                                                 -------------
10305                                                       =>
10407                                                       =>
10509                                                       =>
10005                                                       <=
10007                                                       <=
10009                                                       <=


PS C:\Users\takk\aaa>

diff(Compare-Object)は、2つのセットの差分を取るだけなので、順序のあるテキストは比較できません。

$d1には1~4の数字、$d2には順序を変えただけの1~4を格納して比較してみます。

PS C:\Users\takk\aaa> $d1=1,2,3,4
PS C:\Users\takk\aaa> $d2=1,3,4,2
PS C:\Users\takk\aaa> diff $d1 $d2
PS C:\Users\takk\aaa>

この通り、差分が出ません。あくまでもセット(集合)の比較です。

One response to “PowerShell(Compare-Object)

  1. A fɑscinating discussion іs worth comment.
    I Ԁo believe that you shoulɗ publish morе about this
    subject, it may not be a taboo subject but typically people do not diѕcuss these tоpics.
    To the next! Kind regards!!

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA