web-dev-qa-db-ja.com

sedまたはawkの複数の行を置き換える

Sedまたはawkを使用してsmbファイルの5行を置き換えようとしていますが、改行を処理する方法がわかりません。

9
glisignoli

Sedは一度に1行しか動作しないので、これはかなりひどいです。これを行うために私が今まで見た唯一のまともなテクニックは これは です。これはファイル全体をsedのホールドバッファに保存し、それを一度に操作することを含みます:

sed -n '1h;1!H;${g;s/search/replace/;p;}'

可能であれば、Perlを使用してこれを実現する方がはるかに簡単です。

Perl -0pe 's/search/replace/'

searchには、改行を表す\nsを含めることができます

19
Michael Mrozek