找到一个带有正则表达式的序列,然后找到第二个或接下来的几行

时间:2009-12-29 14:08:15

标签: regex

我将通过一个例子更好地解释我的情况。

考虑一个httpd.conf文件,我需要在其中更改文档根目录。所以首先我需要找到ServerName然后更改文档根目录,所以我相信我需要两个正则表达式,但我不知道该怎么做?有人可以帮忙吗?或者我只需要找到ServerName并做一个注释的行号然后继续使用脚本查找DocumentRoot?感谢。

2 个答案:

答案 0 :(得分:0)

我不确定,但也许这样的事情对你有用。

cat /etc/apache2/http.conf | sed 's/.*ServerName=.*/ServerName=YourNewLocation/' > tmp
mv tmp /etc/apache2/http.conf

答案 1 :(得分:0)

我不确定为什么你需要先搜索ServerName,但是这里是你可以改变文档的方法

awk '/^DocumentRoot/{$0="DocumentRoot /new/root" } {print}' /path/httpd.conf  > temp
mv temp /path/httpd.conf 

或者,如果您正在使用ServerName值来创建新根

awk '$1~/ServerName/{servername=$2}
/^DocumentRoot/{
 $0="DocumentRoot "servername  # create your new root here.
}
{print}
' /path/httpd.conf > temp
mv temp /path/httpd.conf