I need a one liner which displays 'yes' or 'no' whether grep finds any results.
I have played with grep -c
, but without success.
-
How about:
uptime | grep user && echo 'yes' || echo 'no' uptime | grep foo && echo 'yes' || echo 'no'
Then you can have it quiet:
uptime | grep --quiet user && echo 'yes' || echo 'no' uptime | grep --quiet foo && echo 'yes' || echo 'no'
From the grep manual page:
EXIT STATUS
Normally, the exit status is 0 if selected lines are found and 1 otherwise. But the exit status is 2 if an error occurred, unless the -q or --quiet or --silent option is used and a selected line is found.
From Weboide -
I don't think u can do it with grep alone. Is it possible to put a bash script around it?
kaerast : The question wasn't whether grep can do it alone, the question was how to do something based on the results of grep.From Pimmetje -
Not sure what you mean by "one liner", for me this is a "one liner"
Just add
; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi
after you grep commandbash$ grep ABCDEF /etc/resolv.conf; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi No bash$ grep nameserver /etc/resolv.conf; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi nameserver 212.27.54.252 Yes
Add -q flag to grep if you want to supress grep result
bash$ grep -q nameserver /etc/resolv.conf; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi Yes
From radius -
This version is intermediate between Weboide's version and radius's version:
if grep --quiet foo bar; then echo "yes"; else echo "no"; fi
It's more readable than the former and it doesn't unnecessarily use
$?
like the latter.From Dennis Williamson
0 comments:
Post a Comment