小文字⇔大文字の変換方法については、以前に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