ฉันพยายามแก้ไขไฟล์ nginx.conf ของฉันโดยทางโปรแกรมซึ่งมีบรรทัดดังนี้:
access_log /var/log/nginx/access.log;
ซึ่งฉันต้องการให้มีลักษณะเช่นนี้:
access_log /dev/stdout;
ฉันเชื่อว่า regex ^\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|'