bashで変数の複数回置換
変数内のデータを2回置換しようと思ったんですが、そもそも変数の通常の置換方法だと、どうやって書くんだろう?
という所から調べてみました。
DATA=”aaa,bbb,aaa”
echo ”${DATA//aaa/ccc}”
1回置換。これはそのまま出来る。
結果:ccc,bbb,ccc
んで、調子に乗って、以下のようになってみたら、エラーになりました。
echo ”${${DATA//aaa/ccc}//,/t}”
test.sh: line xx: ${${DATA//aaa/ccc}//,/t}: 悪い代理
悪い代理って初めてみた。
幾つか調べてみたんですが、良い方法が無かったので、sedコマンドの複数指定で乗り切りました。
echo ”${DATA//aaa/ccc}” | sed 's/,/t/g'
または
echo ”$DATA” | sed -e 's/aaa/ccc/g' -e 's/,/t/g'
変数内のデータを2回置換しようと思ったんですが、そもそも変数の通常の置換方法だと、どうやって書くんだろう?
という所から調べてみました。
DATA=”aaa,bbb,aaa”
echo ”${DATA//aaa/ccc}”
1回置換。これはそのまま出来る。
結果:ccc,bbb,ccc
んで、調子に乗って、以下のようになってみたら、エラーになりました。
echo ”${${DATA//aaa/ccc}//,/t}”
test.sh: line xx: ${${DATA//aaa/ccc}//,/t}: 悪い代理
悪い代理って初めてみた。
幾つか調べてみたんですが、良い方法が無かったので、sedコマンドの複数指定で乗り切りました。
echo ”${DATA//aaa/ccc}” | sed 's/,/t/g'
または
echo ”$DATA” | sed -e 's/aaa/ccc/g' -e 's/,/t/g'
コメント