এটি করার বহনযোগ্য উপায় - এবং আরও কার্যকর উপায় - ঠিকানাগুলির সাথে। তুমি এটি করতে পারো:
printf %s\\n cat dog pear banana cat dog |
sed -e '/cat/!{/dog/!b' -e '};cBear'
এইভাবে যদি লাইনটিতে স্ট্রিং বিড়ালটি না থাকে এবং স্ক্রিপ্টের বাইরে স্ট্রিং কুকুরটি থাকে না sed
b
, তার বর্তমান লাইনটি স্বতঃপ্রকাশ করে এবং পরবর্তী চক্রটি শুরু করতে পরবর্তী দিকে টান দেয়। সুতরাং পরবর্তী নির্দেশ সঞ্চালন করে না - যা এই উদাহরণে c
পড়তে সমগ্র লাইন hanges বিয়ার কিন্তু এটি কিছু করতে পারে।
সম্ভবত এটি লক্ষণীয় !b
যে sed
কমান্ডের নীচে থাকা কোনও বিবৃতি কেবল স্ট্রিংযুক্ত একটি লাইনের সাথে মিলতে পারে dog
বা cat
- সুতরাং আপনি কোনও লাইন মেলানোর কোনও বিপদ ছাড়াই আরও পরীক্ষা চালাতে পারবেন - যার অর্থ আপনি এখন নিয়ম প্রয়োগ করতে পারবেন শুধুমাত্র এক বা অন্য হিসাবে।
তবে এরপরে। উপরের কমান্ড থেকে এখানে আউটপুট:
###OUTPUT###
Bear
Bear
pear
banana
Bear
Bear
আপনি পিছনে উল্লেখগুলি সহ একটি লুকিং টেবিলটি বহনযোগ্যভাবে প্রয়োগ করতে পারেন।
printf %s\\n cat dog pear banana cat dog |
sed '1{x;s/^/ cat dog /;x
};G;s/^\(.*\)\n.* \1 .*/Bear/;P;d'
এই সাধারণ উদাহরণস্বরূপ কেস সেটআপ করা আরও অনেক কাজ, তবে এটি sed
দীর্ঘকালীন সময়ে আরও অনেক নমনীয় স্ক্রিপ্ট তৈরি করতে পারে ।
প্রথম লাইনে আমি x
হোল্ড স্পেস এবং প্যাটার্ন স্পেস পরিবর্তন করে তারপরে আবার পরিবর্তন করার আগে স্ট্রিং <space>
ক্যাট <space>
কুকুরটিকে<space>
হোল্ড স্পেসে x
.োকান।
তারপরে এবং প্রতিটি নিম্নলিখিত লাইনে আমি G
স্থানটি প্যাটার্ন স্পেসের সাথে যুক্ত করে রাখি, তারপরে লাইনের শুরু থেকে শুরু হওয়া নতুন অক্ষর পর্যন্ত সমস্ত অক্ষর শেষের দিকে যুক্ত হওয়া একটি স্ট্রিং এর পরে ফাঁকা স্থানগুলিতে মেলে কিনা তা পরীক্ষা করে দেখুন। যদি তাই হয় তবে আমি পুরোটি অনেক ভালুকের সাথে প্রতিস্থাপন করব এবং যদি না হয় তবে কোনও ক্ষতি হয় না কারণ আমি পরবর্তী P
প্যাটার্ন স্পেসে কেবলমাত্র প্রথম লাইন পর্যন্ত ছড়িয়ে পড়েছি তবে d
এগুলি সমস্তই একত্রিত করব।
###OUTPUT###
Bear
Bear
pear
banana
Bear
Bear
এবং যখন আমি নমনীয় বলি, আমি এটি বোঝাতে চাই। এখানে এটা প্রতিস্থাপন করা হয় বিড়াল সঙ্গে BrownBear এবং কুকুর সঙ্গে BlackBear :
printf %s\\n cat dog pear banana cat dog |
sed '1{x;s/^/ 1cat Brown 2dog Black /;x
};G;s/^\(.*\)\n.* [0-9]\1 \([^ ]*\) .*/\2Bear/;P;d'
###OUTPUT###
BrownBear
BlackBear
pear
banana
BrownBear
BlackBear
আপনি অবশ্যই সন্ধানের টেবিলের বিষয়বস্তুগুলিতে একটি বিস্তৃত পরিমাণে প্রসারিত করতে পারেন - আমি গ্রেগ উবেনের ইউজনেট ইমেলগুলি থেকে এই বিষয়টি নিয়েছিলাম যখন 90 এর দশকে, তিনি বর্ণনা করেছিলেন যে কীভাবে তিনি একটি sed s///
বিবৃতি থেকে ক্রুড ক্যালকুলেটরটি তৈরি করেছিলেন ।
-r
এর সমার্থক হিসেবে বিকল্প-E
গনুহ সাথে সামঞ্জস্যের sed জন্য। ওপেনবিএসডি এবং ওএস এক্স এরsed -E
পালানো পাইপকে আক্ষরিক পাইপ হিসাবে ব্যাখ্যা করবে, বিকল্প অপারেটর হিসাবে নয়। এখানে নেটবিএসডি ম্যান পৃষ্ঠার একটি কার্যকারী লিঙ্ক এবং এখানে ওপেনবিএসডি এর একটি যা দশ বছরের পুরানো নয়।