${○○%××}続き

仕事柄、テキトーな自動処理を組むことがあるんだけど、
最近知ったこの一見わけわかめな記号なかなか使えるかも。

この処理は大きく二つの処理に分けられる。

${○○%××}
${○○%%××}

${○○#××}
${○○##××}

%は後方一致、#は前方一致である。
一つの場合は最短マッチ、二つの場合は最長マッチである。

例えば、「http://weather.yahoo.co.jp/weather/jp/kinki.html」というURLからホスト名だけを取りだしたい時、

URL=http://weather.yahoo.co.jp/weather/jp/kinki.html
HOST=${URL#http://}
HOST=${HOST%%/*}

echo $HOST #weather.yahoo.co.jp を出力

こんな感じ。
ちょい前まで、perl使って

HOST=`echo $URL|perl -e 's/http:\/\/([^\/]+)\/.+$/$1/;print'`

とかってやってた
perl使えば1行ですむっちゃすむんだけど、コマンド置換とか、パイプ(|)通したりしたりしてちょっと重い感じ。
でも、上の使えばshellだけでできちゃう。任意のURLからドメイン名だけ取り出すってのも簡単。
ただ、何やってんのかイメージつかないところが問題か。

perlsedの置換はこのすぐに見分けつくけど。
これでまた、shellが好きになりました。