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"; fiafter 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 YesAdd -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 YesFrom radius -
This version is intermediate between Weboide's version and radius's version:
if grep --quiet foo bar; then echo "yes"; else echo "no"; fiIt's more readable than the former and it doesn't unnecessarily use
$?like the latter.From Dennis Williamson
0 comments:
Post a Comment