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
완벽하게 작동합니다.