আমি প্রোগ্রাম হিসাবে আমার 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
আমি ক্যাপচার গ্রুপের সাথে স্মার্ট হওয়ার চেষ্টা করছি এবং "অ্যাক্সেস_লগ /var/log/nginx/access.log" জন্য সরাসরি কী খুঁজে পাচ্ছি না; ক্ষেত্রে যদি বিতরণ ডিফল্ট লগ ফাইলের অবস্থান পরিবর্তন করে।
sed '/access_log/s|/[^;]\+|/dev/stdout|'