Вы уже на правильном пути. Вы также можете использовать escape-символ \
для скобок.
rm -r 10.2\ \(14C92\)
Вы также можете использовать цитирование:
rm -r '10.2 (14C92)'
Этого можно добиться с помощью следующего однострочника Perl:
perl -0777 -pe 's{(<Directory\s/var/www/.*?AllowOverride\s)None(.*?</Directory>)}{$1All$2}gs' /tmp/file
Здесь флаг -0777
изменяет разделитель строк на undef, поэтому perl будет читать файл как одну строку (это может быть проблемой для больших файлов ).
-p
для перебора строк файла и их печати, -e
для запуска скрипта, /tmp/file
ваш файл конфигурации
s{(<Directory\s/var/www/.*?AllowOverride\s)None(.*?</Directory>)}{$1All$2}gs
— это регулярное выражение, сопоставляющее 2 части строфы каталога с /var/www и в основном заменяющее «Нет» на «Все». Обратите внимание, что в Perl вы можете использовать почти любой символ в качестве разделителя регулярных выражений, в этом случае я использовал {}
вместо //
.
Одним из способов с sed
является:
sed -E '/<Directory \/var\/www\/>/,/<\/Directory>/{
s/AllowOverride None/AllowOverride All/; }' infile
это обновляет / изменяетAllowOverride None
на AllowOverride All
, только если это между<Directory /var/www/>
и</Directory>
(мы экранировали косую черту обратной косой чертой -, это потому, что косая черта является специальным символом для команды sed ).