Я намагаюся програмно відредагувати свій файл 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|'