私は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|'