小文字⇔大文字の変換方法については、以前にsedでの処理方法について記述したことがあったが、処理の仕方としてはsedだけではなく、Bashの構文を使ったりtrやawkを使ったりといろいろなアプローチの仕方がある。
今回は、それらについてを紹介する。

1.Bash 4.0以降での方法

Bash 4.0以降では、構文として変数を呼び出す際に小文字⇔大文字の変換をさせることができる。

大文字化

bash
${変数^} # 最初の一文字目のみ大文字化 ${変数^^} # すべて大文字化
shell
[root@BS-PUB-CENT7-01 test1]# v=test;echo ${v^} Test [root@BS-PUB-CENT7-01 test1]# v=test;echo ${v^^} TEST

小文字化

bash
${変数,} # 最初の一文字目のみ小文字化 ${変数,,} # すべて小文字化
shell
[root@BS-PUB-CENT7-01 test1]# v=TEST;echo ${v,} tEST [root@BS-PUB-CENT7-01 test1]# v=TEST;echo ${v,,} test

反転

bash
${変数~} # 最初の一文字目のみ反転 ${変数~~} # すべて反転
shell
[root@BS-PUB-CENT7-01 test1]# v=TeSt;echo ${v~} teSt [root@BS-PUB-CENT7-01 test1]# v=TeSt;echo ${v~~} tEsT

2.trコマンドを用いる

大文字化

bash
tr '[:lower:]' '[:upper:]'
shell
[root@BS-PUB-CENT7-01 ~]# echo abc def | tr '[:lower:]' '[:upper:]' ABC DEF

小文字化

bash
tr '[:upper:]' '[:lower:]'
shell
[root@BS-PUB-CENT7-01 ~]# echo ABC DEF | tr '[:upper:]' '[:lower:]' abc def

3.sedを用いる

大文字化

bash
sed -e 's/\(.*\)/\U\1/'
shell
[root@BS-PUB-CENT7-01 ~]# echo abc def | sed -e 's/\(^.*\)/\U\1/' ABC DEF

小文字化

bash
sed -e 's/\(.*\)/\L\1/'
shell
[root@BS-PUB-CENT7-01 ~]# echo ABC DEF | sed -e 's/\(^.*\)/\L\1/' abc def

4.awkを用いる

大文字化

bash
awk '{print toupper($0)}'
shell
[root@BS-PUB-CENT7-01 ~]# echo abc def | awk '{print toupper($0)}' ABC DEF

小文字化

bash
awk '{print tolower($0)}'
shell
[root@BS-PUB-CENT7-01 ~]# echo ABC DEF | awk '{print tolower($0)}' abc def

5.Perlを用いる

大文字化

bash
perl -ne 'print uc'
shell
[root@BS-PUB-CENT7-01 ~]# echo abc def | perl -ne 'print uc' ABC DEF

小文字化

bash
perl -ne 'print lc'
shell
[root@BS-PUB-CENT7-01 ~]# echo ABC DEF | perl -ne 'print lc' abc def

6.Python

大文字化

bash
コマンド | python -c 'print raw_input().upper()'
shell
[root@BS-PUB-CENT7-01 ~]# echo 'abc def' | python -c 'print raw_input().upper()' ABC DEF

小文字化

bash
コマンド | python -c 'print raw_input().lower()'
shell
[root@BS-PUB-CENT7-01 ~]# echo 'ABC DEF' | python -c 'print raw_input().lower()' abc def

7.Ruby

大文字化

bash
コマンド | ruby -e 'STDIN.each {|line| puts line.upcase }'
shell
[root@BS-PUB-CENT7-01 ~]# echo 'ABC DEF' | ruby -e 'STDIN.each {|line| puts line.upcase }' ABC DEF

小文字化

bash
コマンド | ruby -e 'STDIN.each {|line| puts line.downcase }'
shell
[root@BS-PUB-CENT7-01 ~]# echo 'abcdecv' | ruby -e 'STDIN.each {|line| puts line.downcase }' abcdecv