sedで置換ではなく検索でのデリミタを '/' (スラッシュ) 以外に変更する
置換の場合は、Perlでも受け継がれている、s
の次の文字がデリミタ、になるので、
sed -ne 's/pattern/replace/' file sed -ne 's#pattern#replace#' file
が等価になってまあ問題ないのだが、検索のパターンの場合がよくわからなかった。まさか
sed -ne '/pattern/p' file sed -ne '#pattern#p' file
とするわけにも行かないし。
ググってみたのだがなぜかcutの話が出たり、置換の方についてしか書かれてなかったりばっかりだったので、man sed
するも、ご存知の通りGNU sedのmanはかなり省略されているので参考にならない。
ってのも後から確認すると、「sed デリミタ」でググったトップ10に普通にちゃんと載ってるし、man sed
の方にも載ってたんだけど……。
まあとにかくinfo sed
に詳細があるってことでそっち見てみた。infoはEmacsだからかなり使えなくて困ったけどまあ該当の記述を発見。
sed -ne '\#pattern#p' file
な感じで\
を前置すれば行けるということだった。
何度も書くけどググってもman sed
でもちゃんと読めばまあ載ってるんだけどね。ブログに書くくらいしとけば二度と忘れずに済みそうなんで書いとく。
あと、infoがマジで使いづらくてつらいんで、その辺なんとかしたい。Emacs覚えた方がいいのかね。