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
いじょー。
おれはおっさんじゃない!!!
- 作者: アーノルドロビンス,Arnold Robbins,福崎俊博
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2000/07
- メディア: 単行本
- 購入: 1人 クリック: 12回
- この商品を含むブログ (11件) を見る