有这个文件

ServerName *
ServerAlias *
ServerAlias *

<Directory>

我想在第一次出现带有文本 S2 的 ServerAlias 后追加一个新行。
我已经尝试了以下
sed '/ServerAlias/ a\S2\' foo

但这会在所有出现之后附加。

我的最终结果应该是
ServerName *
ServerAlias *
S2
ServerAlias *

<Directory>

最佳答案

实际上,它不是 sed,但也许 awk 可以帮助您。

$> cat ./file
ServerName *
ServerAlias *
ServerAlias *

<Directory>

$> awk '{print} /^ServerAlias/ && !n {print "S2"; n++}' ./file
ServerName *
ServerAlias *
S2
ServerAlias *

<Directory>

UPD :错误现已修复,感谢 glenn_jackman

关于sed 仅在 1 次出现时追加行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7906670/

10-11 01:46