sed를 사용하여 Apache 구성에서 .htaccess 파일 사용 어려움이 있습니다. 내 구성

Bash 스크립트를 사용하여 Ubuntu Vagrant 상자의 프로비저닝을 자동화하려고합니다. 모두 잘되지만 .htaccess파일 에서 재정의를 허용하도록 Apache를 구성하는 데 어려움이 있습니다. 내 구성 파일에는 다음 블록이 있습니다.

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

내가해야 할 일은로 교체 AllowOverride None하는 것 AllowOverride all입니다. 이것은의 작업 인 것처럼 보이지만 이 구성 파일에는 재정의를 허용하지 않는 sed다른 <Directory>블록이 있습니다.

sed를 사용하여 특정 문자열이 다른 두 문자열 사이에있을 때 특정 문자열을 새 문자열로 바꾸려면 어떻게해야합니까?

즉, 어떻게 대체 할 수 AllowOverride None는 사이에 나타나는 경우에만 <Directory /var/www/></Directory>?

다음 명령을 사용하여 관심있는 블록을 얻을 수 있습니다.

sed -n '/<Directory \/var\/www\/>/,/<\/Directory>/p' 000-default


답변

sed 이 형식으로 패턴 범위를 지원합니다.

sed '/startpattern/,/endpattern/ <sed-commands>' file

예를 들면 다음과 같습니다.

sed '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride all/' httpd.conf