ディレクトリへの上書きをhttpd.conf
許可するようにファイルを変更しようとしています。/var/www/html
単純化のために、次のように仮定しましょう。
<Directory "/var/www/html">
# Comment
AllowOverride none
# Comment
</Directory>
AllowOverride none
と交換してみてくださいAllowOverride All
。
私は次のことを試しました:
sed -i 's/\(Directory \"\/var\/www\/html\">.*?\)AllowOverride none\(.*?<\/Directory>\)/\1AllowOverride all\2/' httpd.conf
私はいくつかの行をキャプチャするようには思えなかったので、正規表現修飾子などの他のいくつかの操作を試しました。https://www.gnu.org/software/sed/manual/html_node/Text-search-across-multiple-lines.html ただし、必須文字列は一致できません。
この仕事をどうしますか? sed以外のソリューションも大歓迎です。
ベストアンサー1
私はあなたが望むものは他の場所ではなく、そのAllowOverride none
ブロック内の特定のコンテンツを置き換えることであると仮定します。<Directory "/var/www/html">
私たちはできます。
簡潔なバージョン:
sed -i '/^<Directory "\/var\/www\/html">/,/^<\/Directory>/ {
s/AllowOverride none/AllowOverride all/;
}' httpd.conf
これは、代替コマンドが指定された行間にのみ適用されることを意味します。
まず、ファイルをバックアップしてからdiff
もう一度バックアップして、必要なファイルがあることを確認してください。 :)