সম্পর্ন নিভূল হতে পারে
Some text
begin
Some text goes here.
end
Some more text
এবং আমি "ব্লক" থেকে "শেষ" অবধি শুরু হওয়া পুরো ব্লকটি বের করতে চাই।
awk দিয়ে আমরা পছন্দ করতে পারি awk '/begin/,/end/' text
।
গ্রেপ দিয়ে কীভাবে করবেন?
সম্পর্ন নিভূল হতে পারে
Some text
begin
Some text goes here.
end
Some more text
এবং আমি "ব্লক" থেকে "শেষ" অবধি শুরু হওয়া পুরো ব্লকটি বের করতে চাই।
awk দিয়ে আমরা পছন্দ করতে পারি awk '/begin/,/end/' text
।
গ্রেপ দিয়ে কীভাবে করবেন?
উত্তর:
18-নভেম্বর -2016 আপডেট হয়েছে (যেহেতু গ্রেপ আচরণটি পরিবর্তিত হয়েছে: -পি প্যারামিটার সহ গ্রেপ এখন সমর্থন করে না ^
এবং $
অ্যাঙ্করগুলি [কর্নেল v: 4.4.0-21-জেনেরিক সহ] উবার্টু 16.04-এ)) ( ভুল (অ-) সমাধান )
$ grep -Pzo "begin(.|\n)*\nend" file
begin
Some text goes here.
end
দ্রষ্টব্য: অন্যান্য কমান্ডের জন্য কেবল '^' & '$' অ্যাঙ্কারগুলিকে নতুন লাইন অ্যাঙ্কর প্রতিস্থাপন করুন '\n'
______________________________
গ্রেপ কমান্ড সহ:
grep -Pzo "^begin\$(.|\n)*^end$" file
আপনি যদি ফলাফলগুলি "শুরু" এবং "শেষ" অন্তর্ভুক্ত না করতে চান তবে লিকহাইন্ড এবং লিকহেড সমর্থন সহ গ্রেপ ব্যবহার করুন।
grep -Pzo "(?<=^begin$\n)(.|\n)*(?=\n^end$)" file
এছাড়াও আপনি \K
লুকহাইন্ড দৃ as়তার পরিবর্তে বিজ্ঞপ্তিটি ব্যবহার করতে পারেন ।
grep -Pzo "^begin$\n\K(.|\n)*(?=\n^end$)" file
\K
প্যাটার্ন মেলানোর আগে বিকল্পটি সবকিছু উপেক্ষা করুন এবং প্যাটার্ন নিজেই উপেক্ষা করুন।
\n
আউটপুট থেকে খালি লাইন মুদ্রণ এড়ানোর জন্য ব্যবহৃত।
অথবা @ অভিনশরাজের পরামর্শ অনুসারে নীচে সহজ সরল গ্রেপ রয়েছে:
grep -Pzo "(?s)^begin$.*?^end$" file
grep -Pzo "^begin\$[\s\S]*?^end$" file
(?s)
গ্রেটকে বিন্দুটিকে নতুন লাইনের অক্ষরের সাথে মেলে দেওয়ার অনুমতি দেয়।
[\s\S]
হোয়াইটস্পেস বা অ-সাদা স্থানের কোনও অক্ষরের সাথে মেলে।
এবং "আউট" এবং "শেষ" অন্তর্ভুক্ত না করে তাদের আউটপুট নীচে রয়েছে:
grep -Pzo "^begin$\n\K[\s\S]*?(?=\n^end$)" file # or grep -Pzo "(?<=^begin$\n)[\s\S]*?(?=\n^end$)"
grep -Pzo "(?s)(?<=^begin$\n).*?(?=\n^end$)" file
এখানে সমস্ত কমান্ডের সম্পূর্ণ পরীক্ষা দেখুন ( -পি প্যারামিটারের সাথে গ্রেপ আচরণ পরিবর্তিত হয়েছে )
^
একটি রেখার সূচনা করুন এবং একটি লাইনের $
প্রান্তটি নির্দেশ করুন। এগুলি "সূচনা" এবং "শেষ" এর চারপাশে যুক্ত হয়েছে যদি তারা কোনও লাইনে একা থাকে তবে তাদের সাথে মেলে।
দুটি কমান্ডে আমি পালিয়ে গিয়েছিলাম $
কারণ এটি "কমান্ড সাবস্টিটিউশন" ( $(command)
) ব্যবহার করে যা একটি কমান্ডের আউটপুটকে কমান্ডের নাম প্রতিস্থাপন করতে দেয়।
-o, --only-matching
Print only the matched (non-empty) parts of a matching line,
with each such part on a separate output line.
-P, --perl-regexp
Interpret PATTERN as a Perl compatible regular expression (PCRE)
-z, --null-data
Treat the input as a set of lines, each terminated by a zero byte (the ASCII
NUL character) instead of a newline. Like the -Z or --null option, this option
can be used with commands like sort -z to process arbitrary file names.
grep -Pzo "(?<=begin\n)(.|\n)*(?=\nend)" file
মুদ্রণ না করতে চান \n
।
grep -Pzo "(?s)begin.*?end" file
grep -Pzo "begin[\s\S]*?end" file
grep: ein nicht geschütztes ^ oder $ wird mit -Pz nicht unterstützt
ত্রুটির grep: a not protected ^ or $ is not supported with -Pz
grep
বদলে গেছে বলে মনে হচ্ছে।