আমি পিস্রিগ্র্যাপের উপর প্রচুর নির্ভর করেছিলাম, তবে নতুন গ্রেপের সাথে আপনাকে এর বেশ কয়েকটি বৈশিষ্ট্যের জন্য পিসিগ্রিপ ইনস্টল করতে হবে না। শুধু ব্যবহারgrep -P
।
ওপির প্রশ্নের উদাহরণে, আমি মনে করি যে নীচের বিকল্পগুলি সুন্দরভাবে কাজ করে, দ্বিতীয় প্রশ্নের সাথে কীভাবে আমি প্রশ্নটি বুঝি:
grep -Pzo "abc(.|\n)*efg" /tmp/tes*
grep -Pzl "abc(.|\n)*efg" /tmp/tes*
আমি লেখাটি / tmp / test1 হিসাবে অনুলিপি করেছি এবং 'g' মুছে ফেলেছি / tmp / test2 হিসাবে সংরক্ষণ করেছি। এখানে আউটপুটটি দেখানো হচ্ছে যে প্রথমটি ম্যাচ করা স্ট্রিংটি দেখায় এবং দ্বিতীয়টি কেবলমাত্র ফাইলের নাম দেখায় (সাধারণত-ম্যাচটি দেখাতে হয় এবং সাধারণত -l কেবল ফাইলের নাম দেখাতে হয়)। নোট করুন যে 'জেড' মাল্টলাইনের জন্য প্রয়োজনীয় এবং '(। | \ N)' এর অর্থ 'নিউলাইন ব্যতীত অন্য কোনও কিছুর সাথে' বা 'নিউলাইন' - অর্থ যেকোনো কিছু মিলবে:
user@host:~$ grep -Pzo "abc(.|\n)*efg" /tmp/tes*
/tmp/test1:abc blah
blah blah..
blah blah..
blah blah..
blah efg
user@host:~$ grep -Pzl "abc(.|\n)*efg" /tmp/tes*
/tmp/test1
আপনার সংস্করণটি যথেষ্ট নতুন কিনা তা নির্ধারণ করতে, চালান man grep
এবং দেখুন এটির অনুরূপ কিছু শীর্ষে উপস্থিত হয়েছে কিনা:
-P, --perl-regexp
Interpret PATTERN as a Perl regular expression (PCRE, see
below). This is highly experimental and grep -P may warn of
unimplemented features.
এটি জিএনইউ গ্রেপ 2.10 থেকে।