If the grep command returns any result set


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting If the grep command returns any result set
# 1  
If the grep command returns any result set

my intension is to use a grep command inside the shell script
and if any row is returned or not..
depending on the resultset i have to code on further.

how to check this
i mean.. could anyone help me out with the if condition how to use it here !!
# 2  
This is a faq, just use the search engine right above and search for if grep.
# 3  
Gotam,

You can use the below code to test whether you got some rows using grep.....

Code:
 
count=`grep "search pattern" filename|wc -l`
if [ $count -ne 0 ]
then
     echo "pattern match found"
else
     echo "no match with the pattern"
fi

Hope this is what you are looking for....

Thanks
# 4  
Quote:
Originally Posted by spider007
Gotam,

You can use the below code to test whether you got some rows using grep.....

Code:
 
count=`grep "search pattern" filename|wc -l`
if [ $count -ne 0 ]
then
     echo "pattern match found"
else
     echo "no match with the pattern"
fi

Hope this is what you are looking for....

Thanks
While this would certainly work, it's more complex than it has to be. What I believe the OP is (should be) looking for are exit statuses. You should do some googling to get some more info, but I'll give you a quick rundown.

When you run a command, after it completes there is something called an exit value. Generally if a command is successful, the exit value is 0, and if it fails, the value is 1 (if you look in the man pages for a command, sometimes it may have a whole list of exit statuses for each possible scenario). You can see what a commands exit status is by looking at the variable $?.

So what you want is to check if the exit status of your grep command is a 0 or a 1:

Let's take a look below:

Code:
(03:28:07\[D@DeCoBox15)
[~]$ cat animals
cat
dog
hippo

(03:30:50\[D@DeCoBox15)
[~]$ grep dog animals
dog

(03:30:57\[D@DeCoBox15)
[~]$ echo $?
0

(03:31:00\[D@DeCoBox15)
[~]$ grep mouse animals

(03:31:07\[D@DeCoBox15)
[~]$ echo $?
1

As you can see, when the grep succeeds, the exit status was 0, and when it failed (because there is not mouse in the animals file) it was 1. So now all you have to do is build a if this than or if that....yadda yadda.

But wait...there's more. If you want to do something like this in a one liner you can use conditional checking syntax: && (if the last command succeeded) and || (if the last command failed). So again, if you want to use this with grep:

Code:
(03:31:12\[D@DeCoBox15)
[~]$ grep cat animals >/dev/null && echo "Yep, it is there" || echo "Sorry, could not find it"
Yep, it is there

(03:35:00\[D@DeCoBox15)
[~]$ grep mouse animals >/dev/null && echo "Yep, it is there" || echo "Sorry, could not find it"
Sorry, could not find it

So in this example, we're just echoing stuff based on the results...but we could be doing anything.

Hope this helps...it's amazing how much I'll type when I can't sleep.
# 5  
Or perhaps easier to understand and if grep has the -q (quiet) option instead of > /dev/null:

Code:
if grep -q "search pattern" filename
then
  echo "pattern match found"
else
  echo "no match with the pattern"
fi

Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #113
Difficulty: Easy
Linux is not Unix per se, but Linux is a Unix-like operating system.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Grep command giving different result for different users for same command

Hello, I am running below command as root user #nodetool cfstats tests | grep "Memtable switch count" Memtable switch count: 12 Where as when I try to run same command as another user it gives different result. #su -l zabbix -s /bin/bash -c "nodetool cfstats tests | grep "Memtable switch... (10 Replies)
Discussion started by: Pushpraj
10 Replies

2. Shell Programming and Scripting

Grep result from dd command

Hi, I am running following command in a bash script for testing IO and use grep to get throughput number, but it did not work, it displayed everything: dd if=/dev/zero of=/dev/null bs=1G count=1 oflag=dsync | grep bytes | awk '{print $7}' 1+0 records in 1+0 records out 536870912 bytes... (2 Replies)
Discussion started by: hce
2 Replies

3. UNIX for Dummies Questions & Answers

Bash - CLI - grep - Passing result to grep through pipe

Hello. I want to get all modules which are loaded and which name are exactly 2 characters long and not more than 2 characters and begin with "nv" lsmod | (e)grep '^nv???????????? I want to get all modules which are loaded and which name begin with "nv" and are 2 to 7 characters long ... (1 Reply)
Discussion started by: jcdole
1 Replies

4. Shell Programming and Scripting

If test grep.... always returns 0 status

Hi all. I am trying to compare and filter two files. I have a bigfile.txt of names and ids and a smallfile.txt of ids only. What I am trying to do is use a while read loop to read the ids in the bigfile and then echo the name and id only if the id exists in the small file. Basically, I'm trying to... (5 Replies)
Discussion started by: jameswatson3
5 Replies

5. Shell Programming and Scripting

Result set into an array

Hi, I have an issue with the result set. I wanted to run db2 query against db2 server in unix environment using perl script. I wanted to get the result set into an array. $db=<<DB_Name>> connect to $db get connection state this is my query = SELECT DISTINCT 'R' FROM... (0 Replies)
Discussion started by: solo123
0 Replies

6. Shell Programming and Scripting

Grep returns nothing

Hi all, I am trying to grep a .txt file for a word. When I hit enter, it returns back to $ The file is 4155402 in size and is named in this way: *_eveningtimes_done_log.txt I use this command, being in the same directory as the file: grep -i "invalid" *_eveningtimes_done_log.txt ... (16 Replies)
Discussion started by: DallasT
16 Replies

7. UNIX for Dummies Questions & Answers

Grep without returns...

Is there a command where I can pipe my grep into it and it will output it with spaces rather than returns? Example I want to turn prompt$ grep blah file blah blah into this prompt$ grep blah file | someCommand blah blah (1 Reply)
Discussion started by: mrwatkin
1 Replies

8. Shell Programming and Scripting

Use grep result to execute next command

Hi I am trying to run 2 servers using a script one after the other. I start the first one: run.sh -c servername >> jboss_log.txt & Then I have to wait until I see Started message in the log file before I launch the other server. I can't use sleep because I am not sure how long it'll... (5 Replies)
Discussion started by: iririr
5 Replies

9. Shell Programming and Scripting

how to parse the result of "set" command

Hello, I would like to parse all the shell variables and get the name and the value for each variable. Set command get the list of variables but I don't know if there is a command such getopts to get each of them. regards, Teo (7 Replies)
Discussion started by: teodora
7 Replies

10. Shell Programming and Scripting

assign subst|grep|sed command result to a variable

Hi, I'm quite new to scripting and I want to modify following line of an existing script: MYVAR=`subst |grep 'L:\\\:' | sed -e 's/.*\\\//'`; What I have to do is to use the content of a variable instead of the constant expression 'L:\\\:' as the grep string to be matched. Assuming I already... (5 Replies)
Discussion started by: snowbiker99
5 Replies

Featured Tech Videos