একটি ফাইলের স্ক্রিপ্টের সম্পাদনার জন্য POSIX সরঞ্জাম (বরং মান আউট রুপান্তরিত করা বিষয়বস্তু প্রিন্টিং বেশী) হল ex
।
printf '%s\n' 'g/^[^C]*C[^C]*$/d' x | ex file.txt
আপনার শেডের সংস্করণ যদি এটি সমর্থন করে তবে আপনি এটি ব্যবহারsed -i
করতে পারেন, আপনি সচেতন হন যে এটি পোর্টেবল নয় যদি আপনি কোনও স্ক্রিপ্ট লিখে থাকেন যা বিভিন্ন ধরণের সিস্টেমে চালানোর উদ্দেশ্যে।
ডেভিড ফোস্টার মন্তব্য মন্তব্য জিজ্ঞাসা:
আপনি ব্যবহার করছেন printf
এবং না করছেন এর echo
মতো কোনও কারণ আছে কি ex -c COMMAND
?
উত্তর: হ্যাঁ
জন্য printf
বনাম echo
এটা বহনযোগ্যতা একটি প্রশ্ন; দেখতে কেন প্রতিধ্বনি চেয়ে printf, উত্তম? এবং কমান্ডগুলি ব্যবহার করে নতুন লাইনগুলি ছেদ করা আরও সহজ printf
।
জন্য printf ... | ex
বনাম ex -c ...
, এটা ত্রুটি পরিচালনা একটি প্রশ্ন। এই নির্দিষ্ট কমান্ডের জন্য এটি কোনও ব্যাপার নয়, তবে সাধারণভাবে এটি করে; উদাহরণস্বরূপ, রাখার চেষ্টা করুন
ex -c '%s/this pattern is not in the file/replacement text/g | x' filename
একটি স্ক্রিপ্টে। নিম্নলিখিতগুলির সাথে বিপরীতে:
printf '%s\n' '%s/no matching lines/replacement/g' x | ex file
প্রথমটি ঝুলবে এবং ইনপুটটির জন্য অপেক্ষা করবে; ex
কমান্ডটি ইওএফ প্রাপ্ত হলে দ্বিতীয়টি প্রস্থান করবে , সুতরাং স্ক্রিপ্টটি চালিয়ে যাবে। বিকল্প workarounds যেমন s///e
, তবে তারা POSIX দ্বারা নির্দিষ্ট করা হয় না। আমি পোর্টেবল ফর্মটি ব্যবহার করতে পছন্দ করি যা উপরে দেখানো হয়েছে।
g
কমান্ডের জন্য অবশ্যই শেষে একটি নতুন লাইন থাকা উচিত এবং আমি printf
একক উদ্ধৃতিতে একটি নতুন লাইন এম্বেড করার পরিবর্তে কমান্ডগুলি মোড়ানো ব্যবহার করতে পছন্দ করি ।
awk
ফিল্ড বিভাজকের চটজলদি ব্যবহার !