"小文字を大文字に"、"ある文字を別の文字に" 変更するシェルスクリプト

Java のコードで "aaa.bbb.ccc" ( ソフトウェアのプロパティ名みたいです ) みたいにハードコードされている箇所を private static な定数に変更してくださいという依頼がありました。ひとつひとつ手でやるのは面倒ですし、修正ミスしてしまう恐れもあるので、シェルスクリプトを書いてみました。

#!/bin/sh

while read line; do
  echo $line | tr '[a-z]' '[A-Z]' | tr '.' '_'
done < $1

変数名の命名規則は aa.bbb.ccc -> AAA_BBB_CCC、変換したい文字列についてはファイルに一行ずつ書いてそのファイルを引数として渡す感じにしています。

o 引数にしているファイル ( 例 )

aaa.bbb.ccc
ddd.eee.fff
ggg.hhh.iii

o 出力

AAA_BBB_CCC
DDD_EEE_FFF
GGG_HHH_III


private static な定数までわかっているなら、以下みたいな感じでもいいですね。

#!/bin/sh
QUART="\""

while read line; do
  NAME=$(echo $line | tr '[a-z]' '[A-Z]' | tr '.' '_')
  echo "private static String" $NAME "=" $QUART$line$QUART
done < $1


本当は Java のソース食わせれば上記のようにしてくれるまでできればいいかもですが、難しそうですし、そんなに需要あるものでもなさそうですので、上記ぐらいで。

以上です。