এখানে আরও একটি sed
:
sed -e:n -e'/\n#.*\ndotan/!{$!{N;/^#/bn' \
-eb -e\} -e'/^#/s/\(\n\)\(dotan.*\)*/\1#\2/g' \
-et -e\} -eP\;D <in >out
আপনি চান হিসাবে এটি করে। এটি কেবল একটি স্ট্যাকের উপর কাজ করে - যখন প্রয়োজন হয় তখন এটি তৈরি করা এবং মন্তব্য করা লাইনের উপস্থিতির মধ্যে যতক্ষণ প্রয়োজন ততক্ষণ পর্যন্ত এবং পুরানো বাফারটিকে নতুন মন্তব্য করা লাইনের পক্ষে আরও ইনপুটটিতে ডাম্প করার সময় এটি খুঁজে পাওয়া যায়। ছবি ...
দুঃখিত, আমি জানি না কেন আমি এটি করেছি। তবে মনে মনে এলো।
যাইহোক, sed
সর্বশেষ মন্তব্য করা লাইনের মধ্যে যে কোনও সিরিজে বাফারগুলি ছড়িয়ে দেয়, শেষ মন্তব্যটির ঘটনাটি সঠিকভাবে ট্র্যাক করার জন্য তার বাফারটিতে আর কোনও একক বজায় রাখে না এবং যদি কোনও সময় এটি শেষ লাইনের মুখোমুখি হয় তবে এটি চেষ্টা করার চেষ্টা করবে চূড়ান্ত g
লোবলাল এক্সিকিউশন স্টেটমেন্ট এবং শাখাটি t
পুরো বাফারটি মুদ্রিত হতে পারে, অন্যথায় এটি P
যত তাড়াতাড়ি এটি হবে তার সমস্ত বাফার থেকে এটি প্রকাশ করে lines
আমার ধারণা, এই বিষয়টিই মনের মধ্যে একত্রিত হয়েছে ...
printf %s\\n \#alice \#bob charlie dotan eric \
\#alice \#bob charlie dotan eric \
\#alice \#bob charlie dotan eric |
sed -e:n -e'l;/\n#.*\ndotan/!{$!{N;/^#/bn' \
-eb -e\} -e'/^#/s/\(\n\)\(dotan.*\)*/\1#\2/g' \
-et -e\} -eP\;D
#alice
#alice\n#bob$
#alice\n#bob\ncharlie$
#alice\n#bob\ncharlie\ndotan$
#alice
#bob\ncharlie\ndotan$
#bob\ncharlie\ndotan\neric$
#bob\ncharlie\ndotan\neric\n#alice$
#bob\ncharlie\ndotan\neric\n#alice\n#bob$
#bob\ncharlie\ndotan\neric\n#alice\n#bob\ncharlie$
#bob\ncharlie\ndotan\neric\n#alice\n#bob\ncharlie\ndotan$
#bob
charlie\ndotan\neric\n#alice\n#bob\ncharlie\ndotan$
charlie
dotan\neric\n#alice\n#bob\ncharlie\ndotan$
dotan
eric\n#alice\n#bob\ncharlie\ndotan$
eric
#alice\n#bob\ncharlie\ndotan$
#alice
#bob\ncharlie\ndotan$
#bob\ncharlie\ndotan\neric$
#bob\ncharlie\ndotan\neric\n#alice$
#bob\ncharlie\ndotan\neric\n#alice\n#bob$
#bob\ncharlie\ndotan\neric\n#alice\n#bob\ncharlie$
#bob\ncharlie\ndotan\neric\n#alice\n#bob\ncharlie\ndotan$
#bob
charlie\ndotan\neric\n#alice\n#bob\ncharlie\ndotan$
charlie
dotan\neric\n#alice\n#bob\ncharlie\ndotan$
dotan
eric\n#alice\n#bob\ncharlie\ndotan$
eric
#alice\n#bob\ncharlie\ndotan$
#alice
#bob\ncharlie\ndotan$
#bob\ncharlie\ndotan\neric$
#bob
#charlie
#dotan
eric
এই কমান্ড এবং উপরের একটির মধ্যে একটি মাত্র পার্থক্য রয়েছে এবং তা হল l
শীর্ষে ook কমান্ড। আমরা যখন কাজ করি তেমন প্যাটার্ন স্পেসে l
নজর রাখি তখন আমরা sed
পর্দার আড়ালে কী ঘটে যায় তার একটি আরও ভাল ধারণা পেতে পারি এবং এর প্রচেষ্টা কীভাবে পরিচালিত করা যায় সে সম্পর্কে আরও ভাল ধারণা পেতে পারি।
এই ক্ষেত্রে আমরা sed
স্ট্যাক ইনপুটটি পর্যবেক্ষণ করতে পারি যতক্ষণ না ইনপুটটির দ্বিতীয় ঘটনা খুঁজে পাওয়া যায় \n#.*\ndotan
এবং এটি যখন একবারে পূর্ববর্তী একটি লাইন মুদ্রণ শুরু করে। এটা দুর্দান্ত। আমি এই উপর কাজ অনেক শিখেছি।