ラインパターンを編集せずにパターンを一致させた後、sedは新しいラインを追加できますか?

ラインパターンを編集せずにパターンを一致させた後、sedは新しいラインを追加できますか?

パターンの後にファイルに行を追加する方法を見つける必要がありますが、パターンのある行を編集したくありません。

たとえば、私の元のファイルは次のようになります。

group: misc
host: server1
job: internal

私はそれを次のように変更したいと思います。

group: misc
host: server1
role: webserver
job: internal

難しいのは、「host:」と一致させる必要がありますが、ホストの後ろの名前が毎回異なることです。残りの行を尊重し、代わりに "host:"が見つかるとすぐに、新しい行をダンプして、新しい行の後にホスト名を孤児として残すためにsedを取得する方法が見つかりませんでした。

ベストアンサー1

a一致後のテキストの追加:

sed '/^host: /a\
role: webserver
' sample

または、i一致の前に行を挿入します。

sed '/^job: /i\
role: webserver
' sample

おすすめ記事