Браузеры часто кешируют http 301, http://getluky.net/2010/12/14/301-redirects-cannot-be-undon / - хорошее чтение.
Работает ли он в браузере, который вы раньше не использовали на сайте?
Также откройте инструменты разработчика своего браузера, чтобы узнать, получает ли он перенаправление после очистки кеша
Вы можете ограничить sed
только для изменения определенной строки:
sed -i '3s/enabled = 0/enabled = 1/g' file
Это изменит только 3-ю строку для [purple]
Вот решение, использующее Perl, при условии, что ваша конфигурация находится в config.ini
:
perl -000 -n -i -e 's/^enabled = 0$/enabled = 1/m if /^\[shovel\]\n/; print;' config.ini
Это делает следующее:
-000
- читать файл в режиме абзаца, по сути то же самое как выполнение $ / = "\ n \ n";
в коде. -n
- запустить указанный код внутри цикла while (<>) {}
. -i
- оперативное редактирование указанного файла вместо вывода на стандартный вывод. При желании вы можете указать расширение, которое приведет к резервному копированию входного файла с этим расширением. Например, -i.bak
создаст файл резервной копии с именем config.ini.bak
. -e
- Выполняет указанный код Perl. Сам код говорит о замене строк, содержащих ровно enabled = 0
, на enabled = 1
, если входной «абзац» начинается с [лопатка]
на линия сама по себе. [
и ]
необходимо экранировать, поскольку они обычно имеют особое значение в регулярном выражении.
Вы можете попробовать это решение на awk
awk '/shovel/{flag=1}flag&&/enabled/{$NF=1;flag=0}1' input
В sed
вы можете использовать диапазон (останавливаясь на пустой строке в конце категории [лопата]
):
sed '/\[shovel\]/,/^$/ s/enabled = 0/enabled = 1/' file
первая часть / \ [shovel \] /, / ^ $ /
означает найти строку с [shovel]
, продолжайте идти, пока не найдете пустую строку, и выполните следующие команды (в данном случае простой s / old / new
) только для этой части файла
Примечание в ответ на комментарий: sed
не будет принимать альтернативные разделители в диапазонах и адресах (поэтому избегайте любых символов /
, которые должны быть буквальными, если вам нужно сопоставить их), если им не предшествует обратная косая черта. Вы всегда можете использовать альтернативный разделитель в следующих командах, например:
sed '/\[shovel\]/,/^$/ s|enabled = 0|enabled = 1|' file
или
sed '\|\[shovel\]|, |^$| s|enabled = 0|enabled = 1|' file