Sponsored Content
Top Forums Shell Programming and Scripting If the grep command returns any result set Post 302416118 by DeCoTwc on Sunday 25th of April 2010 03:39:00 AM
Old 04-25-2010
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.
 

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. 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
ZGREP(1)						      General Commands Manual							  ZGREP(1)

NAME
zgrep - search possibly compressed files for a regular expression SYNOPSIS
zgrep [ grep_options ] [ -e ] pattern filename... DESCRIPTION
Zgrep is used to invoke the grep on compress'ed or gzip'ed files. All options specified are passed directly to grep. If no file is speci- fied, then the standard input is decompressed if necessary and fed to grep. Otherwise the given files are uncompressed if necessary and fed to grep. If zgrep is invoked as zegrep or zfgrep then egrep or fgrep is used instead of grep. If the GREP environment variable is set, zgrep uses it as the grep program to be invoked. For example: for sh: GREP=fgrep zgrep string files for csh: (setenv GREP fgrep; zgrep string files) AUTHOR
Charles Levert (charles@comm.polymtl.ca) SEE ALSO
grep(1), egrep(1), fgrep(1), zdiff(1), zmore(1), znew(1), zforce(1), gzip(1), gzexe(1) ZGREP(1)
All times are GMT -4. The time now is 02:54 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy