シェル環境(Bash環境)やシェルスクリプト(Bashスクリプト)で「大文字と小文字を変換する方法」をまとめます
コマンドラインシェルとして最も広く使われている「Bash」には、変数に設定された文字列の小文字と大文字を変換する機能があります。パターン別にまとめると、以下のようになります。
小文字にする
1文字目のみ小文字に変換するには、以下の例のように「${変数名,}」を用います。
$ s="HELLO WORLD"
$ echo ${s,}
hELLO WORLD
すべて小文字に変換するには、以下の例のように「${変数名,,}」を用います。
$ s="HELLO WORLD"
$ echo ${s,,}
hello world
指定した文字のみ小文字に変換するには、以下の例のように「${変数名,,[対象文字]}」を用います。
$ s="HELLO WORLD"
$ echo ${s,,[AIUEO]}
HeLLo WoRLD
大文字にする
1文字目のみ大文字に変換するには、以下の例のように「${変数名^}」を用います。
$ s="hello world"
$ echo ${s^}
Hello world
すべて大文字に変換するには、以下の例のように「${変数名^^}」を用います。
$ s="hello world"
$ echo ${s^^}
HELLO WORLD
指定した文字のみ大文字に変換するには、以下の例のように「${変数名^^[対象文字]}」を用います。
$ s="hello world"
$ echo ${s^^[aiueo]}
hEllO wOrld
大文字と小文字をトグルする(逆にする)
1文字目のみトグルするには、以下の例のように「${変数名~}」を用います。
$ s="Hello World"
$ echo ${s~}
hello World
すべてトグルするには、以下の例のように「${変数名~~}」を用います。
$ s="Hello World"
$ echo ${s~~}
hELLO wORLD
指定した文字のみトグルするには、以下の例のように「${変数名^^[対象文字]}」を用います。
$ s="Hello World"
$ echo ${s~~[lodW]}
HeLLO wOrLD
各単語の頭文字だけ大文字にする
各単語の頭文字を大文字にするには、以下の例のように文字列を配列にしてから「${配列名[@]^}」を用います。
$ s="hello world"
$ s=($s)
$ echo ${s[@]^}
Hello World
大文字小文字が混在した文字列から変換するなら、以下の例のように、すべて小文字にしてから変換すると良いでしょう。
$ s="hEllO wOrld"
$ s=(${s,,})
$ echo ${s[@]^}
Hello World
関連記事
Bash使いなら覚えておきたい!変数値を置換する方法まとめ!
シェル(Bash)で作業している時や、シェルスクリプトを書いている時、変数などに設定された値(文字列)を置換して使いたいことがあります。
そんな時に使えるのが、パラメーター展開時のパターンマッチによる置換機能です。
変数値の置換書式
変...
更新履歴
2018-09-02 Ubuntu 18.04 LTSで動作を確認
コメント