J'essaie de modifier mon fichier nginx.conf par programme, qui contient une ligne comme celle-ci:
access_log /var/log/nginx/access.log;
que je veux ressembler à ceci:
access_log /dev/stdout;
Je crois que l'expression régulière ^\s*access_log([^;]*);
capturera la /var/log/nginx/access.log
pièce dans un groupe de capture, mais je ne sais pas comment remplacer correctement le groupe de capture par sed?
J'ai essayé
echo " access_log /var/log/nginx/access.log;" | sed 's/^\s*access_log([^;]*);/\1\\\/dev\\\/stdout/'
mais je reçois l'erreur:
sed: -e expression #1, char 45: invalid reference \1 on `s' command's RHS
si j'essaye sed -r
alors il n'y a pas d'erreur, mais la sortie n'est pas ce que j'attends:
/var/log/nginx/access.log\/dev\/stdout
J'essaie d'être intelligent avec le groupe de capture et ainsi de suite et de ne pas rechercher directement "access_log /var/log/nginx/access.log;" dans le cas où la distribution modifie l'emplacement du fichier journal par défaut.
sed '/access_log/s|/[^;]\+|/dev/stdout|'