小文字⇔大文字の変換方法については、以前にsedでの処理方法について記述したことがあったが、処理の仕方としてはsedだけではなく、Bashの構文を使ったりtrやawkを使ったりといろいろなアプローチの仕方がある。
今回は、それらについてを紹介する。
1.Bash 4.0以降での方法
Bash 4.0以降では、構文として変数を呼び出す際に小文字⇔大文字の変換をさせることができる。
大文字化
${変数^} # 最初の一文字目のみ大文字化
${変数^^} # すべて大文字化
[root@BS-PUB-CENT7-01 test1]# v=test;echo ${v^}
Test
[root@BS-PUB-CENT7-01 test1]# v=test;echo ${v^^}
TEST
小文字化
${変数,} # 最初の一文字目のみ小文字化
${変数,,} # すべて小文字化
[root@BS-PUB-CENT7-01 test1]# v=TEST;echo ${v,}
tEST
[root@BS-PUB-CENT7-01 test1]# v=TEST;echo ${v,,}
test
反転
${変数~} # 最初の一文字目のみ反転
${変数~~} # すべて反転
[root@BS-PUB-CENT7-01 test1]# v=TeSt;echo ${v~}
teSt
[root@BS-PUB-CENT7-01 test1]# v=TeSt;echo ${v~~}
tEsT
2.trコマンドを用いる
大文字化
tr '[:lower:]' '[:upper:]'
[root@BS-PUB-CENT7-01 ~]# echo abc def | tr '[:lower:]' '[:upper:]'
ABC DEF
小文字化
tr '[:upper:]' '[:lower:]'
[root@BS-PUB-CENT7-01 ~]# echo ABC DEF | tr '[:upper:]' '[:lower:]'
abc def
3.sedを用いる
大文字化
sed -e 's/\(.*\)/\U\1/'
[root@BS-PUB-CENT7-01 ~]# echo abc def | sed -e 's/\(^.*\)/\U\1/'
ABC DEF
小文字化
sed -e 's/\(.*\)/\L\1/'
[root@BS-PUB-CENT7-01 ~]# echo ABC DEF | sed -e 's/\(^.*\)/\L\1/'
abc def
4.awkを用いる
大文字化
awk '{print toupper($0)}'
[root@BS-PUB-CENT7-01 ~]# echo abc def | awk '{print toupper($0)}'
ABC DEF
小文字化
awk '{print tolower($0)}'
[root@BS-PUB-CENT7-01 ~]# echo ABC DEF | awk '{print tolower($0)}'
abc def
5.Perlを用いる
大文字化
perl -ne 'print uc'
[root@BS-PUB-CENT7-01 ~]# echo abc def | perl -ne 'print uc'
ABC DEF
小文字化
perl -ne 'print lc'
[root@BS-PUB-CENT7-01 ~]# echo ABC DEF | perl -ne 'print lc'
abc def
6.Python
大文字化
コマンド | python -c 'print raw_input().upper()'
[root@BS-PUB-CENT7-01 ~]# echo 'abc def' | python -c 'print raw_input().upper()'
ABC DEF
小文字化
コマンド | python -c 'print raw_input().lower()'
[root@BS-PUB-CENT7-01 ~]# echo 'ABC DEF' | python -c 'print raw_input().lower()'
abc def
7.Ruby
大文字化
コマンド | ruby -e 'STDIN.each {|line| puts line.upcase }'
[root@BS-PUB-CENT7-01 ~]# echo 'ABC DEF' | ruby -e 'STDIN.each {|line| puts line.upcase }'
ABC DEF
小文字化
コマンド | ruby -e 'STDIN.each {|line| puts line.downcase }'
[root@BS-PUB-CENT7-01 ~]# echo 'abcdecv' | ruby -e 'STDIN.each {|line| puts line.downcase }'
abcdecv