BASH通过AWK将ServerName添加到Apache.conf

时间:2014-04-04 18:07:55

标签: bash sed awk

嘿伙计们我尝试自动化构建和部署,并意识到我无法在

下正确插入ServerName
# Global configuration
#

由于一些愚蠢的原因,awk并不解释我的\n如果我删除\n#它工作正常,但我希望它在全局评论下而不是在它的中间,什么我在这里做错了吗?

希望看到

# Global configuration
#

ServerName localhost

这是表达式

awk '/# Global configuration\n#/ { print; print "\nServerName localhost"; next }1' apache2.conf

也许更好的想法就是使用SED?

2 个答案:

答案 0 :(得分:3)

试试这个:

awk 'p&&!NF{print "ServerName localhost";p=0}/# Global configuration/{p=1}1' apache2.conf

答案 1 :(得分:2)

awk用于逐行处理。您只能匹配单行中包含的模式。

您尝试做的事情可以通过以下方式完成:

awk '/# Global configuration/{c=1;print;next} c&&/^#/ {print; print "\nServerName localhost"; c=0; next} 1' file

# Global configuration
#

ServerName localhost