bashやsed、trコマンド…Linuxコンソール上で小文字⇔大文字変換する方法いろいろ
Pocket

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

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

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

This article has 1 comments

  1. Pingback: sedによる小文字→大文字の変換 | 俺的備忘録 〜なんかいろいろ〜

Leave a Comment

メールアドレスが公開されることはありません。