256bitの殺人メニュー

インフラエンジニアだったソリューションアーキテクトなくわののブログ。こちらのBlogは個人の意見となっていて会社とは全く関係ありません。お約束です。[twitter:@kuwa_tw]めんどくさがりが重い腰を上げて何かをアウトプットすることにどれほどの意味があるのかを試してみたいブログでもある。

sedで/の置換をエスケープなしでやりたい

おっさん力その2。
sedでパス名の置換したい時に、/のエスケープすんのがめんどくさいって言ってた人がいたんで。

エスケープ

#!/bin/bash

for i in `ls /usr/local/`
do

echo ${i} | sed "s/\/usr\/local\///"

done

↓結果

bin
etc
games
include
lib
man
sbin
share
src

これでもいいんですけど、ごちゃってしてみづれーですよね。

エスケープしない

よく知られてないのかはわかりませんが、実は、s/の/部分の記号はなんでもいいのです。
ということで、このようにもかけます。

#!/bin/bash

for i in `ls /usr/local/`
do

echo ${i} | sed "s#/usr/local/##"

done

でも行けます。

まあ

このパターンならbasename使えって話ですけどね。

#!/bin/bash

for i in `ls /usr/local/`
do

basename ${i}

done


いじょー。
おれはおっさんじゃない!!!

sed & awk デスクトップリファレンス

sed & awk デスクトップリファレンス