BashとPowerShell比較(uniq)


アニメ『実は私は』

個性は大事ですね。

今回はuniqコマンドについて、BashとPowerShellを比べます。

(本記事はPowerShell入門記事としてコチラにもまとめています。)

0~2のランダムな整数を10個並べたテキストファイルを用意します。

takk@ubu16:~/aaa$ for i in {1..10};do expr $RANDOM % 3;done > src.txt
takk@ubu16:~/aaa$

このような内容になりました。

takk@ubu16:~/aaa$ cat src.txt
2
1
0
0
2
2
0
1
1
0
takk@ubu16:~/aaa$

Bashの場合

uniqコマンドの引数にテキストファイルを指定するとこのような結果になります。

takk@ubu16:~/aaa$ uniq src.txt
2
1
0
2
0
1
0
takk@ubu16:~/aaa$

uniqコマンドは前の行が今の行と一致しているかどうかしか見ないので、
最初にsortしておいてから使います。

takk@ubu16:~/aaa$ sort src.txt | uniq
0
1
2
takk@ubu16:~/aaa$

PowerShellの場合

PowerShellの場合も同じで、sortしないとこのようになります。

PS /home/takk/aaa> get-content src.txt | get-unique
2
1
0
2
0
1
0
PS /home/takk/aaa>

Bashと同じようにsortが必要ですが、コマンドレットがやたら長いです。

PS /home/takk/aaa> get-content src.txt | sort-object | get-unique
0
1
2
PS /home/takk/aaa>

Get-Content、Sort-Object、Get-Uniqueのエイリアスはそれぞれ、
gc、sort、guですが、
sortが/usr/bin/sortと名前がかぶるので、いっそLinux側のコマンドをこのように使ってしまった方がよいです。

PS /home/takk/aaa> cat src.txt | sort | gu
0
1
2
PS /home/takk/aaa>

ここまできたら、uniqを無理やりPowerShellで実現する必要なない気もします。uniqしたい場合は、Bashに分がありそうです。

コメント

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