Böyle bir satır içeren programlı, nginx.conf dosyasını düzenlemeye çalışıyorum:
access_log /var/log/nginx/access.log;
ki şöyle görünmek istiyorum:
access_log /dev/stdout;
Normal ifadenin bir yakalama grubundaki parçayı ^\s*access_log([^;]*);yakalayacağına inanıyorum /var/log/nginx/access.log, ancak yakalama grubunu sed ile nasıl doğru bir şekilde değiştireceğimi bilmiyorum?
denedim
echo " access_log /var/log/nginx/access.log;" | sed 's/^\s*access_log([^;]*);/\1\\\/dev\\\/stdout/'
ama hatayı alıyorum:
sed: -e expression #1, char 45: invalid reference \1 on `s' command's RHS
denerseniz sed -ro zaman hata yok, ama çıktı beklediğim gibi değil:
/var/log/nginx/access.log\/dev\/stdout
Yakalama grubu ve whatnot ile akıllı olmaya çalışıyorum ve doğrudan "access_log /var/log/nginx/access.log;" dağıtımın varsayılan günlük dosyası konumunu değiştirmesi durumunda.
sed '/access_log/s|/[^;]\+|/dev/stdout|'