Regex 多行sed替换
我正在使用sed进行多行搜索/替换。该文件是默认的apache vhost:Regex 多行sed替换,regex,sed,Regex,Sed,我正在使用sed进行多行搜索/替换。该文件是默认的apache vhost: <VirtualHost *:80> ... <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ... </VirtualHos
<VirtualHost *:80>
...
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
...
</VirtualHost>
...
选项索引跟随符号链接多视图
不允许超限
命令允许,拒绝
通融
...
我想要的是将AllowOverride None替换为AllowOverride All。我提出的sed命令是:
sed-r-i的/(Directory\/var\/www\/>[^以下内容可能适合您:
sed '\#<Directory /var/www/>#,\#</Directory># s|\(AllowOverride\) None|\1 All|' inputfile
sed'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
这将仅在块
..
内执行替换s\\(AllowOverride\)None\1 All
。以下操作可能适用于您:
sed '\#<Directory /var/www/>#,\#</Directory># s|\(AllowOverride\) None|\1 All|' inputfile
sed'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
这将仅在块内执行替换s| \(AllowOverride\)None\1 All
。这也可以通过awk
awk '/Directory \/var\/www\// , /\/Directory/ {sub(/AllowOverride None/,"AllowOverride All")} 1'
在集团内,..
将允许无覆盖
更改为允许全部覆盖
这也可以通过awk
awk '/Directory \/var\/www\// , /\/Directory/ {sub(/AllowOverride None/,"AllowOverride All")} 1'
在集团内,..
将允许无覆盖
更改为允许全部覆盖
可能重复的/g
和/m
都不按您的想法做。后者在sed
中根本不受支持。(也许您知道/g
做什么,但无论如何都要使用它?它是无害的,但在这里毫无用处。)很抱歉重复。我不熟悉sed,我认为它可以处理常见的正则表达式标志。感谢您提供的信息!无论是/g
还是/m
都可能重复,请按您的想法执行。后者在sed
中根本不受支持。(也许你知道/g
做什么,但还是要使用它?它是无害的,但在这里没有用。)很抱歉重复。我不熟悉sed,我认为它可以处理常见的正则表达式标志。谢谢你的信息!