Я пытаюсь редактировать мой файл nginx.conf программно, который содержит такую строку:
access_log /var/log/nginx/access.log;
который я хочу выглядеть так:
access_log /dev/stdout;
Я верю, что регулярное выражение ^\s*access_log([^;]*);
захватит /var/log/nginx/access.log
часть в группе захвата, но я не уверен, как правильно заменить группу захвата на sed?
я пробовал
echo " access_log /var/log/nginx/access.log;" | sed 's/^\s*access_log([^;]*);/\1\\\/dev\\\/stdout/'
но я получаю ошибку:
sed: -e expression #1, char 45: invalid reference \1 on `s' command's RHS
если я попытаюсь, sed -r
то ошибки нет, но результат не соответствует ожиданиям:
/var/log/nginx/access.log\/dev\/stdout
Я пытаюсь быть умным с группой захвата и еще много чего, а не искать напрямую "access_log /var/log/nginx/access.log;" в случае, если дистрибутив меняет расположение файла журнала по умолчанию.
sed '/access_log/s|/[^;]\+|/dev/stdout|'