একাধিক আর্গুমেন্টে গ্রেপ-ভি ব্যবহার করা


12

এটি করার একটি সহজ উপায় আছে? grep -v foo file | grep -v bar

এগ্রিপ দিয়ে এটি করার খুব সম্ভবত উপায় আছে তবে কীভাবে প্লেইন ওল্ড গ্রেপ দিয়ে যাবেন?

সম্পাদনা: grep -v 'foo\|bar' fileকেবলমাত্র জিএনইউ গ্রেপ দিয়ে কাজ করছে বলে মনে হচ্ছে। আমি সোলারিসে আছি এর জন্য কোন সমাধান?


অদ্ভুত প্রশ্ন কারণ প্রথম উদাহরণে আপনি AND করছেন এবং দ্বিতীয়টিতে আপনি OR ম্যাচ করছেন। ফলাফল কেবলমাত্র খুব নির্দিষ্ট পরিস্থিতিতে একই হবে।
গ্রীনল্ডম্যান

1
না সত্যিই না. দ্বিতীয় উদাহরণে, -vপতাকাটি একটি প্রত্যাখ্যান। not(A or B) == not(A) and not(B)
রাহমু

উত্তর:


21

আপনি সাধারণত দেখতে যেহেতু প্রথম অ-বিকল্প যুক্তি হিসাবে না grepদিয়ে প্রতিটি অভিব্যক্তিটি একটি -eআর্গুমেন্ট দিয়ে একটি একক কমান্ডে একাধিক পরীক্ষা করতে পারেন:

$ grep -v -e foo -e bar file

এটি আপনার কমান্ডের একই কাজ বলে: fileএটি থেকে লাইনগুলি মুদ্রণ করে যাতে "ফু" বা "বার" থাকে না।

মনে রাখবেন যে অপসারণ এটি -vসম্পূর্ণরূপে উল্টে যায়; এটি লজিক্যাল অপারেশনও পরিবর্তন করে! আপনি "লু" বা "বার" সমেত সমস্ত লাইন পাবেন ।


12

grep -Ev 'word1|word2' ঠিক কাজ করা উচিত


বিকল্প হিসাবে আপনি egrep ব্যবহার করতে পারেন এবং পাইপ চরিত্রের জন্য ব্যাকস্ল্যাশ ফেলে দিতে পারেন:egrep -v 'word1|word2
ওল্ডটাইমার

দেখা যাচ্ছে এটি সোলারিস গ্রেপের সাথে কাজ করে না। আমি জিএনইউ গ্রেপ ইনস্টল করেছি এবং পুরোপুরি কাজ করেছি। আমি সোলারিসকে সুনির্দিষ্ট করে তুলতে আমার প্রশ্নটি সম্পাদনা করতে যাচ্ছি।
রাহমু

2
@ আরহামু \|একটি জিএনইউ গ্রেপ এক্সটেনশন, তবে আপনি -Eএবং |অপারেটরের সাথে বহনযোগ্য উপায়ে একই জিনিস অর্জন করতে পারেন ।
গিলস 'অশুভ হওয়া বন্ধ করুন'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.