না, সেড রেজেক্সগুলির অ-লোভী মিল নেই।
পার্লের মতো একই কাজ করে এমন AC
"কিছুই না থাকা AC
" ব্যবহার করে আপনি প্রথম পাঠ্যটির সাথে মিলিয়ে যেতে পারেন । বিষয়টি হ'ল, "যা কিছু নেই সেগুলি" একটি নিয়মিত প্রকাশ হিসাবে সহজে প্রকাশ করা যায় না: একটি নিয়মিত প্রকাশ থাকে যা নিয়মিত প্রকাশের তাত্পর্যকে স্বীকৃতি দেয় তবে নেগ্রেশন রেজেেক্স দ্রুত জটিল হয়। এবং পোর্টেবল সেডে, এটি মোটেও সম্ভব নয়, কারণ নেগ্রেশন রিজেক্সের এমন একটি বিকল্পকে গোষ্ঠীকরণের প্রয়োজন যা বর্ধিত নিয়মিত এক্সপ্রেশনগুলিতে উপস্থিত থাকে (উদাহরণস্বরূপ অবাক) তবে বহনযোগ্য বেসিক নিয়মিত এক্সপ্রেশনগুলিতে নয়। সিএনডি এর কিছু সংস্করণ যেমন জিএনইউ সেডের বিআরই-তে এক্সটেনশন রয়েছে যা এটি সমস্ত সম্ভাব্য নিয়মিত অভিব্যক্তি প্রকাশ করতে সক্ষম করে।AC
.*?AC
AC
sed 's/AB\([^A]*\|A[^C]\)*A*AC/XXX/'
একটি রেজেক্সকে অগ্রাহ্য করার অসুবিধার কারণে, এটি ভালভাবে কার্যকর হয় না। পরিবর্তে আপনি যা করতে পারেন তা হ'ল অস্থায়ীভাবে লাইনের রূপান্তর। কিছু সেড বাস্তবায়নে, আপনি একটি চিহ্নকার হিসাবে নিউলাইনগুলি ব্যবহার করতে পারেন, যেহেতু তারা কোনও ইনপুট লাইনে উপস্থিত হতে পারে না (এবং যদি আপনার একাধিক মার্কার প্রয়োজন হয়, তবে একটি ভিন্ন চরিত্রের পরে নিউলাইন ব্যবহার করুন)।
sed -e 's/AC/\
&/g' -e 's/AB[^\
]*\nAC/XXX/' -e 's/\n//g'
তবে সাবধান থাকুন যে ব্যাকস্ল্যাশ-নিউলাইনটি কিছু সেড সংস্করণ সহ একটি অক্ষর সেটগুলিতে কাজ করে না। বিশেষত, এটি জিএনইউ সেডে কাজ করে না, এটি নন-এমবেডড লিনাক্সের সেড বাস্তবায়ন; জিএনইউ সেডে আপনি এর \n
পরিবর্তে ব্যবহার করতে পারেন :
sed -e 's/AC/\
&/g' -e 's/AB[^\n]*\nAC/XXX/' -e 's/\n//g'
এই নির্দিষ্ট ক্ষেত্রে, এটি AC
একটি নতুন লাইন দ্বারা প্রথম প্রতিস্থাপন যথেষ্ট । আমি উপরে উপস্থাপনা পদ্ধতির আরো সাধারণ।
শেডে আরও শক্তিশালী পদ্ধতির হ'ল হোল্ড স্পেসে লাইনটি সংরক্ষণ করা, লাইনটির প্রথম "আকর্ষণীয়" অংশ বাদে সমস্ত অপসারণ, হোল্ড স্পেস এবং প্যাটার্ন স্পেস এক্সচেঞ্জ করা বা হোল্ড স্পেসে প্যাটার্ন স্পেস যুক্ত করা এবং পুনরাবৃত্তি করা। যাইহোক, আপনি যদি এই জটিল জিনিসগুলি করতে শুরু করেন তবে আপনার সত্যিকার অর্থে বিশ্রীতে চলে যাওয়ার বিষয়ে চিন্তা করা উচিত। ওওকের সাথে অ-লোভী মিলও নেই, তবে আপনি একটি স্ট্রিং বিভক্ত করতে পারেন এবং অংশগুলিকে ভেরিয়েবলগুলিতে সংরক্ষণ করতে পারেন।