regex - কিভাবে আমি grep সঙ্গে একটি শব্দ বাদ দিতে পারি?




string search (6)

Grep -v ব্যবহার করে বিপরীত ম্যাচ:

grep -v "unwanted word" file pattern

আমি ভালো কিছু প্রয়োজন:

grep ^"unwanted_word"XXXXXXXX

Grep এর -v বিকল্পটি ব্যবহার করে আপনি এটি করতে পারেন:

grep -v "unwanted_word" file | grep XXXXXXXX

grep -v "unwanted_word" file grep XXXXXXXX এবং grep XXXXXXXX লাইনগুলি ফিল্টার করবে যা প্যাটার্ন XXXXXXXX দিয়ে শুধুমাত্র লাইনগুলিকে grep XXXXXXXX করবে।

সম্পাদনা করুন:

আপনার মন্তব্য থেকে মনে হচ্ছে আপনি unwanted_word word ছাড়া সমস্ত লাইন তালিকাবদ্ধ করতে চান। যে ক্ষেত্রে আপনি প্রয়োজন হয়:

grep -v 'unwanted_word' file

আমি "আমি কীভাবে একটি শব্দ মিলে কিন্তু অন্যকে বাদ দিই না" প্রশ্নটি বুঝতে পেরেছি, যার জন্য একটি সমাধান সিরিজের দুটি greps হয়: প্রথম grep চেয়েছিলেন "শব্দ 1", দ্বিতীয় grep "word2" ব্যতীত:

grep "word1" | grep -v "word2"

আমার ক্ষেত্রে: আমার "প্লট" এবং "# প্লট" এর মধ্যে পার্থক্য করতে হবে যা grep এর "শব্দ" বিকল্পটি করবে না ("#" একটি বর্ণানুক্রমিক নয়)।

আশাকরি এটা সাহায্য করবে.


আমি একটি গুচ্ছ ফাইল সঙ্গে একটি ডিরেক্টরি আছে। আমি সকল ফাইল খুঁজতে চাই যা স্ট্রিং "স্পিডআপ" ধারণ করে না তাই আমি সফলভাবে নিম্নোক্ত কমান্ডটি ব্যবহার করেছি:

grep -iL speedup *

সঠিক সমাধান হল grep -v "word" file , যা তার awk সমতুল্য:

awk '!/word/' file

যাইহোক, যদি আপনার কোন জটিল পরিস্থিতি থাকে যা আপনি চান তবে বলুন, XXX প্রদর্শিত হবে এবং YYY প্রদর্শিত হবে না , তারপরে বেশ কয়েকটি grep গুলি পাইপ করার পরিবর্তে সহজে আসে।

awk '/XXX/ && !/YYY/' file
#    ^^^^^    ^^^^^^
# I want it      |
#            I don't want it

আপনি এমনকি আরো জটিল কিছু বলতে পারেন। উদাহরণস্বরূপ: আমি যে লাইনগুলি XXX বা YYY ধারণ করছি, কিন্তু ZZZ নয়:

awk '(/XXX/ || /YYY/) && !/ZZZ/' file

প্রভৃতি


-v বিকল্পটি আপনাকে সমস্ত লাইন প্রদর্শন করবে যা প্যাটার্নটির সাথে মেলে না।

grep -v ^unwanted_word





grep