Próbuję programowo edytować mój plik nginx.conf, który zawiera taką linię:
access_log /var/log/nginx/access.log;
które chcę wyglądać tak:
access_log /dev/stdout;
Wierzę, że regex ^\s*access_log([^;]*);
uchwyci /var/log/nginx/access.log
część w grupie przechwytywania, ale nie jestem pewien, jak poprawnie zastąpić grupę przechwytywania przez sed?
próbowałem
echo " access_log /var/log/nginx/access.log;" | sed 's/^\s*access_log([^;]*);/\1\\\/dev\\\/stdout/'
ale pojawia się błąd:
sed: -e expression #1, char 45: invalid reference \1 on `s' command's RHS
jeśli spróbuję, sed -r
nie będzie żadnego błędu, ale wynik nie jest zgodny z oczekiwaniami:
/var/log/nginx/access.log\/dev\/stdout
Staram się być mądry z grupą przechwytywania i tym podobne, a nie szukać bezpośrednio „access_log /var/log/nginx/access.log;” w przypadku gdy dystrybucja zmieni domyślną lokalizację pliku dziennika.
sed '/access_log/s|/[^;]\+|/dev/stdout|'