:a
মূল নির্দেশের বাইরে লেবেল লাগানোর দরকার নেই , -e
বিকল্পের প্রয়োজনীয়তাও নেই; অবশেষে, এটি /$/
অতিরিক্ত অতিরিক্ত (প্রতিটি লাইনের একটি EOL অক্ষর রয়েছে)।
অন্যান্য উত্তরগুলি উন্নত করে, একজন পেয়ে যায়
sed -i ':a; N; s/\n/ /; ta' file
নীচে লিখিত থাকলে কোনটি পরিষ্কার হয়,
sed -i ':a
N
s/\n/ /
ta' file
কমান্ড নিম্নলিখিত হিসাবে কাজ করে:
N
(মাল্টলাইন) প্যাটার্ন স্পেসে পরবর্তী লাইনটি যুক্ত করে, এতে ইতিমধ্যে বর্তমান লাইন রয়েছে;
s/\n/ /
একটি স্থান দিয়ে \n
উত্পাদিত নতুন লাইন চরিত্রটি প্রতিস্থাপন করুন ;N
ta
:a
দ্বিতীয় ধাপে প্রতিস্থাপনটি সফল হওয়ার পরে লেবেলটি অনুসরণ করে স্ক্রিপ্ট লাইনে চলে যায় , অর্থাত্ যদি প্রতিস্থাপনটি ঘটে থাকে তবে স্ক্রিপ্টের শেষে "আঘাত" না করে অর্থাত্ ইনপুটটির অন্য একটি লাইন না পড়েই মৃত্যুদণ্ড 1 ধাপে চলে যায় ।
নিম্নলিখিত নোট করুন;
sed
প্রথম লাইন থেকে শুরু করে একের পর এক ইনপুট ফাইলের লাইনগুলি পড়ে ;
:a
এটি কেবল একটি লেবেল, মৃত্যুদন্ড কার্যকর করার জন্য নয়;
N
, নীতিগতভাবে, যে কোনও লাইনে মৃত্যুদন্ড কার্যকর করা হয়, কিন্তু
s/\n/ /
(নীতিগতভাবে যে কোনও লাইনে মৃত্যুদন্ড কার্যকর করা) যে কোনও লাইনে সফল তবে শেষেরটি , তাই
ta
স্ক্রিপ্টের শেষটি তখনই পৌঁছানো যায় যখন ইনপুটটির শেষ লাইনটি পড়ে (একমাত্র লাইন যেখানে s
ব্যর্থ হয়), তাই
- প্রথমটি পড়ার পরে প্যাটার্ন স্পেসে আর কোনও ইনপুট লাইনটি পড়বে না, যদি না শেষটিটি না পড়ে থাকে তবে তারপরে আর পড়ার আর কোনও রেখা নেই এবং অন্তর্নিহিত
p
কমান্ড কার্যকর করা হয়।
সুতরাং স্ক্রিপ্টটি মূলত ইনপুটটির প্রথম লাইনটিতে পড়ে এবং নিম্নলিখিত লাইনগুলিকে একে একে যুক্ত করে রাখে, প্রতিবার একটি স্থানের সাথে নিউলাইনটি স্থাপন করে; শেষ লাইনটি সংযুক্ত হওয়ার পরে (এবং \n
একটি স্পেসে পরিবর্তিত হয়ে), N
কোনও লাইন সংযোজন করতে পারে না, s
ব্যর্থ হয়, ta
এড়িয়ে যায়, স্ক্রিপ্টের শেষে পৌঁছে যায় এবং p
আবদ্ধ রিন্ট স্টেটমেন্টটি বর্তমান লুং 1-লাইন প্যাটার্ন স্পেসে কার্যকর করা হয় ।
-i
বিকল্প ইনপুট ফাইল কর্মের পরিবর্তে file
পুরো 1-লাইন প্যাটার্ন স্থান সঙ্গে।