গ্রেপ থেকে আউটপুট আমি কীভাবে দমন করতে পারি, যাতে এটি কেবল প্রস্থান স্থিতি ফিরে পায়?


57

আমার grepকমান্ড আছে। আমি একটি ফাইল থেকে একটি কীওয়ার্ড অনুসন্ধান করছি, কিন্তু আমি ম্যাচটি প্রদর্শন করতে চাই না। আমি শুধু এর প্রস্থান স্থিতি জানতে চাই grep।

উত্তর:


69

যে কোনও POSIX অনুগত সংস্করণটির শান্তিরgrep-q জন্য স্যুইচ রয়েছে :

-q
     Quiet. Nothing shall be written to the standard output, regardless
     of matching lines. Exit with zero status if an input line is selected.

জিএনইউ গ্রেপ (এবং সম্ভবত অন্যরা) আপনি দীর্ঘ-বিকল্পের প্রতিশব্দও ব্যবহার করতে পারেন:

-q, --quiet, --silent     suppress all normal output

উদাহরণ

স্ট্রিং বিদ্যমান:

$ echo "here" | grep -q "here"
$ echo $?
0

স্ট্রিং বিদ্যমান নেই:

$ echo "here" | grep -q "not here"
$ echo $?
1

6

শুধু আউটপুট পুনর্নির্দেশ grepকরতে /dev/null:

grep sample test.txt > /dev/null

echo $?

1
শূন্য-বহির্গমন প্রস্থান কোডটি ফেরত echo $?দিলে এটি ব্যর্থ হবে grep।
— উইনি নিক্লাস

2

grep -q <pattern>শেষ প্রক্রিয়াটি ( $?) ছাড়ার জন্য আপনাকে কেবল প্রস্থান কোডের তাত্ক্ষণিক চেকের সাথে একত্রিত করতে হবে ।

আপনি এটির মতো একটি কমান্ড তৈরি করতে এটি ব্যবহার করতে পারেন, উদাহরণস্বরূপ:

uname -a | grep -qi 'linux' ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error" ;; esac

আপনি STDERRপছন্দ মতো আউটপুট দমন করতে পারেন:

grep -qi 'root' /etc/shadow &> /dev/null ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error: $?" ;; esac

এটি বিবৃতিটি error: 2থেকে মুদ্রণ করবে case(ধরে নিবেন /etc/shadowযে আমাদের পড়ার সুযোগ নেই বা ফাইলটি বিদ্যমান নেই) তবে ত্রুটি বার্তাটি grepপুনঃনির্দেশিত হবে /dev/nullযাতে আমরা এটি কখনও দেখি না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.