我正在尝试将 httpd.conf 文件中的特定“AllowOverride None”替换为“AllowOverride All”。
鉴于该文件有多行具有相同的模式,我想我会做一个多行模式来替换它...除非 sed 有办法选择何时替换该模式。
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
到:
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All
我将单行替换为:
sudo sed -i 's|DocumentRoot "/var/www/html"|DocumentRoot "/var/www/html/test"|' /etc/httpd/conf/httpd.conf
但我不知道如果有多行怎么办
谢谢
答案1
sed
有很多方法可以做到这一点。例如,使用c
hange命令:
sed --in-place '/^AllowOverride All/c\
AllowOverride None\n' httpd.conf
或者,更好地使用s
替代品:
sed --in-place '/^AllowOverride/s/All/None/'
后者可以音译为“在以 开头的行中AllowOverride
,将第一个实例替换为All
” None
。
答案2
结果你可以指定行号来替换字符串:
sudo sed -i '151s/AllowOverride None/AllowOverride All/' httpd.conf
工作完美。