有这个文件
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/