এগুলি হ'ল, স্বীকৃত ক্রিপ্টিক, sed
আদেশগুলি। বিশেষত (থেকে man sed
):
:
বি এবং টি কমান্ডের জন্য লেবেল লেবেল করুন।
t লেবেল
যদি /// সর্বশেষ ইনপুট লাইনটি পড়ার পর থেকে এবং শেষ টি বা টি কমান্ডের পরে সফল প্রতিস্থাপনের কাজ করে থাকে তবে লেবেলে শাখা; যদি লেবেল বাদ দেওয়া হয়, স্ক্রিপ্টের শেষে শাখা।
n এন প্যাটার্ন স্পেসে পরবর্তী লাইনটি ইনপুট পড়ুন / যুক্ত করুন।
সুতরাং, আপনার পোস্ট করা স্ক্রিপ্টটি ভেঙে ফেলা যায় (পঠনযোগ্যতার জন্য ফাঁকা স্থানগুলি):
sed ':a; $!N; s/\n/string/; ta'
--- ---- ------------- --
| | | |--> go back (`t`) to `a`
| | |-------------> substitute newlines with `string`
| |----------------------> If this is not the last line (`$!`), append the
| next line to the pattern space.
|----------------------------> Create the label `a`.
মূলত, এটি যা করছে তা সিউডোকোডে লেখা যেতে পারে
while (not end of line){
append current line to this one and replace \n with 'string'
}
আরও জটিল ইনপুট উদাহরণ সহ আপনি এটি আরও কিছুটা বুঝতে পারবেন:
$ printf "line1\nline2\nline3\nline4\nline5\n" | sed ':a;$!N;s/\n/string/;ta'
line1stringline2stringline3stringline4stringline5
কেন !$
প্রয়োজন তা আমি সত্যিই নিশ্চিত নই । আমি যতদূর বলতে পারি, আপনি একই আউটপুট পেতে পারেন
printf "line1\nline2\nline3\nline4\nline5\n" | sed ':a;N;s/\n/string/;ta'