sed 可以在匹配模式后添加新行而不编辑行模式吗?

0 sed find replace

我需要找到一种方法在模式之后向文件添加一行,但我不想编辑模式所在的行。

例如,我的原始文件看起来像

group: misc
host: server1
job: internal
Run Code Online (Sandbox Code Playgroud)

我想把它变成类似的东西

group: misc
host: server1
role: webserver
job: internal
Run Code Online (Sandbox Code Playgroud)

困难是我需要匹配“主机:”,但主机后面的名称每次都会不同。我还没有找到一种方法让 sed 尊重该行的其余部分,而是在找到“host:”后立即转储新行,使主机名在新行之后成为孤立的。

Dan*_*ini 5

a匹配后追加文本:

sed '/^host: /a\
role: webserver
' sample
Run Code Online (Sandbox Code Playgroud)

或者i在匹配之前插入一行:

sed '/^job: /i\
role: webserver
' sample
Run Code Online (Sandbox Code Playgroud)