BashとPowerShell比較(文字列置換)

TVアニメ「デンキ街の本屋さん」PV第2弾

アニメ『デンキ街の本屋さん』
徹夜で物づくりはつらいですが、手伝ってくれる人がいるだけで楽しい思い出になりますね。本が好きで私も本屋に勤めていたことがありましたが、袋詰めは無償に楽しいです。レジ打ちは面倒でしたが、質問に回答するのが楽しい。本の場所を覚えるのも楽しい。まあ、本好きといっても、本を読むのが特に好きというわけでなく(まあ当然読みますが)本そのものが好きなんですよね。今でも本は折り目を付けず、手をきれいに洗って読みます。汚れてしまう、同じ本をもう一冊なんてこともあります。

さて、今回はBashとPowerShellの比較の文字列置換です。

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

文字列の長さ

Bash

takk@ubu16:~/aaa$ echo ${#a}
5
takk@ubu16:~/aaa$

PowerShell

PS /home/takk/aaa> $a="HELLO"
PS /home/takk/aaa> $a.Length
5
PS /home/takk/aaa>

文字列の置換

Bash

takk@ubu16:~$ a=HELLO
takk@ubu16:~$ echo ${a//L/E}
HEEEO
takk@ubu16:~$

PowerShell

PS /home/takk> $a="HELLO"
PS /home/takk> $a-replace("L","E")
HEEEO
PS /home/takk>

文字列の分割

Bash

takk@ubu16:~$ a=192.168.1.10
takk@ubu16:~$ b=(${a//./ })
takk@ubu16:~$ echo ${b[1]}
168
takk@ubu16:~$

PowerShell

PS /home/takk> $a="192.168.1.10"
PS /home/takk> $a.Split(".")[1]
168
PS /home/takk>

文字のインデックス(最初)

Bash

takk@ubu16:~$ grep -bo L <<< $a | sed -ne "1s/^\(.*\):.*$/\1/p"
2
takk@ubu16:~$

無理やりです。

PowerShell

PS /home/takk> $a="HELLO"
PS /home/takk> $a.IndexOf("L")
2
PS /home/takk>

文字のインデックス(最後)

Bash

takk@ubu16:~$ grep -bo L <<< $a | tac | sed -ne "1s/^\(.*\):.*$/\1/p"
3
takk@ubu16:~$

tacをてこ入れしただけです。
grepはこのように文字列中のインデックスをすべて表示してくれます。

takk@ubu16:~$ grep -bo L <<< $a
2:L
3:L
takk@ubu16:~$

PowerShell

PS /home/takk> $a="HELLO"
PS /home/takk> $a.LastIndexOf("L")
3
PS /home/takk>

Bashだと文字列の中まで踏み込もうと思うと、別のコマンドの力を借りるしかないですが、PowerShellはメソッドがあるでの楽チンです。

コメント

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