sedまたはawkの複数の行の置き換え[終了]


9

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


6
fもちろん、sedとawkはこれを行うことができますが、あなたの質問が何であるかを正確に理解するのに少し問題があります。正確に何が問題を引き起こしていますか?新しい行を挿入しますか?それらを交換しますか?
10

回答:


19

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

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

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

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

search\n改行を表すsを含めることができます


1
sedマルチライナーの場合は+1 。
Lazer

perlへのコマンドライン引数が何をするか説明できますか?
マイケル

1
@Michael -0はレコード区切り文字をnullに設定するため、ファイル全体が1行ずつではなく一度に読み込まれます。-p置換後の結果を出力します。-eそれを実行する式として次の引数を取ることがあり、s/search/replace/その表現である
マイケルMrozek
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.