मैं अपने nginx.conf फ़ाइल को प्रोग्रामेटिक रूप से संपादित करने की कोशिश कर रहा हूं, जिसमें इस तरह की एक पंक्ति है:
access_log /var/log/nginx/access.log;
जो मैं इस तरह दिखना चाहता हूं:
access_log /dev/stdout;
मेरा मानना है कि रेगेक्स एक कैप्चर ग्रुप में पार्ट ^\s*access_log([^;]*);को कैप्चर करेगा /var/log/nginx/access.log, लेकिन मुझे यकीन नहीं है कि कैप्चर ग्रुप को सही तरीके से सेड के साथ कैसे बदला जाए?
मैंने कोशिश की
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|'