Ich versuche, meine Datei nginx.conf programmgesteuert zu bearbeiten, die eine Zeile wie die folgende enthält:
access_log /var/log/nginx/access.log;
was ich so sehen will:
access_log /dev/stdout;
Ich glaube, der Regex ^\s*access_log([^;]*);erfasst den /var/log/nginx/access.logTeil in einer Erfassungsgruppe, aber ich bin nicht sicher, wie ich die Erfassungsgruppe richtig durch sed ersetzen soll.
ich habe es versucht
echo " access_log /var/log/nginx/access.log;" | sed 's/^\s*access_log([^;]*);/\1\\\/dev\\\/stdout/'
aber ich erhalte den Fehler:
sed: -e expression #1, char 45: invalid reference \1 on `s' command's RHS
wenn ich es versuche sed -rdann liegt kein fehler vor, aber die ausgabe ist nicht das was ich erwarte:
/var/log/nginx/access.log\/dev\/stdout
Ich versuche, mit der Erfassungsgruppe und so weiter schlau zu sein und nicht direkt nach "access_log /var/log/nginx/access.log;" zu suchen. Falls die Verteilung den Standardspeicherort der Protokolldatei ändert.
sed '/access_log/s|/[^;]\+|/dev/stdout|'