গ্রা্যাপে নতুন লাইনের জন্য একটি প্যাটার্ন কীভাবে দেওয়া যায়? শুরুতে নতুন লাইন, শেষে নতুন লাইন। নিয়মিত প্রকাশের উপায় নয়। Like n এর মতো কিছু।
$
। এটি কিছুটা সীমাবদ্ধ, তবে সাধারণ ক্ষেত্রে ব্যবহারযোগ্য।
গ্রা্যাপে নতুন লাইনের জন্য একটি প্যাটার্ন কীভাবে দেওয়া যায়? শুরুতে নতুন লাইন, শেষে নতুন লাইন। নিয়মিত প্রকাশের উপায় নয়। Like n এর মতো কিছু।
$
। এটি কিছুটা সীমাবদ্ধ, তবে সাধারণ ক্ষেত্রে ব্যবহারযোগ্য।
উত্তর:
grep
নিদর্শনগুলি পৃথক লাইনের বিপরীতে মিলছে তাই কোনও ইনপুটটিতে পাওয়া একটি নতুন লাইনের সাথে কোনও প্যাটার্ন মিলানোর কোনও উপায় নেই।
তবে আপনি খালি লাইন এটি পেতে পারেন:
grep '^$' file
grep '^[[:space:]]*$' file # include white spaces
pcregrep
নিয়মিত পরিবর্তে চেষ্টা করুন grep
:
pcregrep -M "pattern1.*\n.*pattern2" filename
-M
বিকল্প এটা, একাধিক লাইন জুড়ে মেলে যাতে আপনি যেমন নতুন লাইন জন্য অনুসন্ধান করতে পারেন \n
।
আপনি এইভাবে ব্যবহার করতে পারেন ...
grep -P '^\s$' file
-P
পার্ল নিয়মিত এক্সপ্রেশন (POSIX- এ একটি এক্সটেনশন grep
) জন্য ব্যবহৃত হয়।\s
সাদা স্থান অক্ষরের সাথে মেলে; যদি এটি অনুসরণ করে *
, এটি একটি খালি লাইনের সাথেও মেলে।^
লাইনের শুরুতে মেলে। $
লাইনের শেষের সাথে মেলে। -P
একটি জিএনইউ এক্সটেনশন। পরিস্থিতি যখন এটির জন্য আহ্বান করে তখন আমি এটি ব্যবহারের জন্য ভাল (সাধারণত চেহারা / চেহারা), তবে পসিক্স গ্রেপ এটি দিয়ে কেবল ফাইলটি করতে পারে [[:space:]]
।
-P
। জিএনইউ যাই হোক বেশ মানসম্পন্ন। :)
brew install grep
জিএনইউ গ্রেপ পেতে চাইবেন , যা বিভিন্ন উপায়ে উন্নত। আপেল.স্ট্যাকেক্সেঞ্জাওয়েজ.কমিশনস
@ জার্নোকে ধন্যবাদ আমি -z বিকল্প সম্পর্কে জানি এবং আমি জানতে পেরেছিলাম যে -N বিকল্পের সাথে জিএনইউ গ্রেপ ব্যবহার করার সময় এর সাথে মিল \n
পাওয়া সম্ভব । :)
উদাহরণ:
grep -zoP 'foo\n\K.*'<<<$'foo\nbar'
প্রিন্ট bar
যেমন কাজের মতো (অ-পোর্টেবল ব্যবহার না করে -P
), আপনি অস্থায়ীভাবে ভিন্ন একটিতে একটি নতুন-লাইন অক্ষর প্রতিস্থাপন করতে পারেন এবং এটি আবার পরিবর্তন করতে পারেন, যেমন:
grep -o "_foo_" <(paste -sd_ file) | tr -d '_'
মূলত এটি সঠিক মিলের সন্ধান করছে _foo_
যেখানে _
মানে \n
(তাই __
= \n\n
)। আপনাকে এটিকে আবার অনুবাদ করতে হবে না tr '_' '\n'
, কারণ প্রতিটি প্যাটার্ন যেভাবেই নতুন লাইনে মুদ্রিত হবে, সুতরাং অপসারণই _
যথেষ্ট।
<(p paste -sd_ file )
?
new line at the beginning
একটি ফাঁকা লাইন এবংnew line at end
ফাইলের প্রতিটি লাইনে প্রযোজ্য। আপনি একটি উদাহরণ পোস্ট করতে পারেন?