BLOGTIMES
2020/03/04

sed で複数行にまたがる文字の置換を行う

  cli 
このエントリーをはてなブックマークに追加

sed には -z という区切りを NULL 文字にするオプションがあります。

これは xargs のように find -print0 と組み合わせて使うためにあるのだと思っていましたが、ふと、これを使ったら複数行にマッチするパターンが書けたりするのかもと思って調べてみたら、意外と簡単に実現できることが分かったのでメモ。

Man page of SED

-z, --null-data
NUL 文字で行を分割する

以下の例を見ると分かりやすいと思いますが、sed は標準では行末の \n にマッチさせることができません

-z なしのとき(\n区切り)

$ cat <<EOF | sed 's/\n/\n\n/g' > 1 > 2 > 3 > EOF 1 2 3

-z ありのとき(NULL文字区切り)

$ cat <<EOF | sed -z 's/\n/\n\n/g' > 1 > 2 > 3 > EOF 1 2 3

    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/11585
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン