দুটি নিদর্শনগুলির মধ্যে (এবং সহ) লাইনগুলি মুদ্রণ করুন


16

আমি লাইনের CKশেষে থাকা রেখাগুলি থেকে গ্রেপিং শুরু করতে চাই এবং লাইনটি যখন Dশেষ হয় তখন গ্রেপিং বন্ধ করতে চাই । আমি চেষ্টা করেছি grep "$CK" "$D" file..txt, কিন্তু কাজ হয়নি।

ইনপুট:

kkkkkkkkkkk   
jjjjjjjjjjjjjjjjjj  
gggggggggggg/CK  
JHGHHHHHHHH   
HJKHKKLKLLL   
JNBHBHJKJJLKKL  
JLKKKLLKJLKJ/D  
GGGGGGGGGGGGGG  
GGGGGGGGGGGGGG

কাঙ্ক্ষিত আউটপুট:

gggggggggggg/CK  
JHGHHHHHHHH   
HJKHKKLKLLL   
JNBHBHJKJJLKKL  
JLKKKLLKJLKJ/D

উত্তর:


21

ব্যবহার করে আপনি বন্ধ আরও ভাল হয় বা

awk '/CK$/,/D$/' file.txt

অথবা

sed -n '/CK$/,/D$/p' file.txt

আপনি পীড়াপীড়ি যদি , এখানে গনুহ, grep উপায়

grep -oPz '(?s)(?<=\n)\N+CK\n.*?D(?=\n)' file.txt

এখানে

-P পার্ল-রেজিপ্সকে সক্রিয় করে

-zলাইন বিভাজককে NUL এ সেট করে। এটি গ্রেপকে পুরো ফাইলটিকে একক লাইন হিসাবে দেখতে বাধ্য করে

-o প্রিন্টগুলি কেবল মিলছে

(?s)PCRE_DOTALL সক্রিয় করে, তাই .কোনও অক্ষর বা নিউলাইন সন্ধান করে

\N নিউলাইন ছাড়া আর কিছু মেলে

.*?খুঁজে। নংগ্রাডি মোডে

(?<=..) এক নজর পিছনে জোর দেওয়া হয়

(?=..) একটি চেহারা-এগিয়ে দৃ -়তা


স্ল্যাশ যোগ করা হয়নি কেন? এর মতোawk '/\/CK/,/\/D/' input
রাহুল পাতিল

@ রাহুলপাতিল, কারণ ওপি বলেছিল যে 'লাইনের শেষে "সিকে" রয়েছে এমন লাইনগুলি থেকে গ্রেপিং শুরু করুন এবং লাইনে "ডি" থাকাকালীন গ্রেপিং বন্ধ করা উচিত
ইরুভর

এটা আমার কাছে মনে হচ্ছে, আপনি রেইগেক্স সম্পর্কে দৃ strong় জ্ঞান রাখে .. আমি সেই স্তরটি বুঝতে পারি নি, তাই আপনি দয়া করে ব্যাখ্যা করতে পারেন যে পিসিআরই গ্রেপের শেষটি
রাহুল পাতিল

@ রাহুলপাতিল, কিছু ব্যাখ্যা যুক্ত করেছেন :-)
ইরুভর

@ রোহিতপ্যাটিল, আমি ফাইল থেকে ম্যাচিং নির্বাচনটি মুছতে চাই। আমি কি এটা করতে পারি?
রানা খান

0

আপনি যদি BSD ব্যবহার করে থাকেন grep(পার্ল রেজেক্স প্যারাম সমর্থন করে না -P), এখানে কার্যনির্বাহী:

grep -o "aaa.*cdn" <(paste -sd_ file) | tr '_' '\n'

এটি সমস্ত লাইন একত্রিত করে ( _চরিত্রের সাথে নতুন রেখাগুলি প্রতিস্থাপন করে ), এক-লাইন প্যাটার্নটি পরীক্ষা করে এবং লাইনগুলি তার মূল অবস্থায় ফিরে প্রসারিত করে কাজ করে।

আপনি যদি জিএনইউ ব্যবহার করছেন তবে আপনি grepএকাধিক লাইন মিল করতে পারবেন grepতবে অন্য উত্তরে উল্লিখিত মত grep( -P) এর জন্য আপনাকে পার্ল-রেজিপ্সপ ব্যবহার করতে হবে । আপনি এখনও ম্যাকোসের মাধ্যমে জিএনইউ ইনস্টল করতে পারেন এবং এর পরিবর্তে ব্যবহার করতে পারেন ।grepbrew install grepggrep


বিকল্পভাবে আপনি ব্যবহার করতে পারেন pcregrepযা মাল্টি-লাইন নিদর্শনগুলিকে সমর্থন করে ( -M)।


আপনি exকমান্ড ব্যবহার করতে পারেন , যেমন:

ex +"/aaa/;/cdn/p" -scq! file
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.