ほっしーの技術ネタ備忘録

技術ネタの備忘録です。基本的に私が忘れないためのものです。他の人の役にも立つといいなぁ。

パスを正規表現したいとき

一般的に、ファイル内のパスを sed で置換したいときはこんな感じに書きます。

$ find /usr/local/bin -type f | sed -e 's/\/usr\/local\/bin\///'

/\/ で意味が違うので、なんか見づらい……

という訳で。 sed正規表現で置換する場合、s/ORIG/REP/ の形式で書くのが一般的ですが、 この / は実は、3か所とも同じ記号を使っていればそれで良いという話です。

つまり、/ を通常文字として使用するパスを扱う場合は、/ の代わりに例えば # を使って、 s#ORIG#REP# の形式で書いても OK という訳です。この場合、/ を使う時にエスケープは不要です。

すると。

$ find /usr/local/bin -type f | sed -e 's#/usr/local/bin/##'

こんな感じでかなり読みやすくなりました。 …と思いませんか?