ここは僕の冷蔵庫。後はあれして食べるだけ。

I love the frozen FOOD.

sedを使ってごにょごにょするとか、そもそもbashを使わずperlにしてしまうとか、置換処理が多い場合はそんなことを考えるわけです。
でも、bashの中でもふつうに変数置換ができるんですってね。
私はshellをあまり書かないので知らないのか、単純に無知なのか(笑)

chikan='this/is/test'
echo ${chikan/test/TEST}

ってなことをすると

this/is/TEST

なんて結果が出てきます。
感動ですねー。

他にも

/test/TESTとありますが、

/置換対象/置換後文字

っていうルールです。尚、「//置換対象/置換文字」とするとマッチしたすべての文字を置換する模様(一回/は最初にみつけたもののみ)

他にもあるみたいですよ。

#パターン 前方一致部分削除

%パターン 後方一致部分削除

なお、#を二つ重ねて##とすると最長一致になるようです(一回#は最短)。
%もおなじね。

使い方

メールのドメインとアカウント

たとえば、メールアドレスのアカウント名とドメイン名をわけたり。

mailaddr='test@honyanyara'
echo ${mailaddr%@*}
echo ${mailaddr#*@}

ディレクトリ名取得

フルパスのファイル名から、PATHとファイル名を取得してみたり。

filename='/home/honyarara/test.jpg'
echo ${filename%/*}
echo ${filename##*/}

おもろい。

外部プロセスキックして分割するなんてことせずに済むのってすばらしい。

参考

http://d.hatena.ne.jp/ozuma/20130928/1380380390