Estou tentando editar meu arquivo nginx.conf programaticamente, que contém uma linha como esta:
access_log /var/log/nginx/access.log;
que eu quero ficar assim:
access_log /dev/stdout;
Acredito que o regex ^\s*access_log([^;]*);
capturará a /var/log/nginx/access.log
parte em um grupo de captura, mas não sei como substituir corretamente o grupo de captura por sed?
eu tentei
echo " access_log /var/log/nginx/access.log;" | sed 's/^\s*access_log([^;]*);/\1\\\/dev\\\/stdout/'
mas estou recebendo o erro:
sed: -e expression #1, char 45: invalid reference \1 on `s' command's RHS
se eu tentar sed -r
, não haverá erro, mas a saída não é o que eu espero:
/var/log/nginx/access.log\/dev\/stdout
Estou tentando ser inteligente com o grupo de captura e outros enfeites e não procurar diretamente por "access_log /var/log/nginx/access.log;" caso a distribuição altere o local padrão do arquivo de log.
sed '/access_log/s|/[^;]\+|/dev/stdout|'