sed는 패턴을 개행 문자로 바꿉니다.

sed는 패턴을 개행 문자로 바꿉니다.

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이를 수행하는 방법에는 여러 가지가 있습니다. 예를 들어, change 명령을 사용하십시오.

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

완벽하게 작동합니다.

관련 정보