Advaced Grep


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Advaced Grep
# 1  
Old 01-26-2006
Question Advaced Grep

Hi all

I have been doing basic admin on a Sun OS 5.6 system for some time and am just trying to learn about shell scripts to help perform some dull things i do every day.

Im trying to automate a task of trawling through multiple logfiles on clustered boxes for high severity alarms and writing the details to a single logfile that i can review later.

So far i have coded:

b="1"
val="severity.9"
while [ $b -le 9 ]
do
rsh vps-is$b grep -i $val /opt/vps/common/log/alarm.vps.*.log >> /opt/home/peri/gareth/alarms.log
echo "vps-is$b complete"
b=`expr $b + 1`
done


Which works great, it connects to each of my 9 boxes in turn, checks the logs and writes back lines that have "Severity 9" in them apending the data to my central logfile

HOWEVER,

I actually also need to 2 lines beneath the line with "Severity 9" on it to tell me all the detail i need.

Is there any way of asking grep to also return the next 2 lines as well as the line that it finds the string on...???

Many Thanks

Gareth Smilie
# 2  
Old 01-26-2006
Quote:
Originally Posted by little g
I actually also need to 2 lines beneath the line with "Severity 9" on it to tell me all the detail i need.

Is there any way of asking grep to also return the next 2 lines as well as the line that it finds the string on...???

Many Thanks

Gareth Smilie
Try GNU grep.

http://whoopis.com/howtos/man.php?qu...pe=2&section=1

The -A option is probably what you want.
# 3  
Old 01-26-2006
Excellent, Im at home at the moment but will try this as soon as i hit the office in the morning.

Can i use it in conjunction with the -i option as the string sometimes isnt capitalised...???
# 4  
Old 01-26-2006
Quote:
Originally Posted by little g
Excellent, Im at home at the moment but will try this as soon as i hit the office in the morning.

Can i use it in conjunction with the -i option as the string sometimes isnt capitalised...???
I don't see why not.
# 5  
Old 01-27-2006
That worked like a charm thanks.

Another quickie if its ok... Smilie

Is it possible to test the return that grep gives and perform aditional tasks if it meets a criteria.

By this is mean that if i grep -c a file for a string and the return value is greater than 0 (because its found my string in the file), i want to then change the value of a variable.

The line of code i have so far is:

rsh vps-is1 vsh -Cvps.1 tappman -v1 -l1 status | grep -c "Down"

Is it possible to perform an 'if' test on the grep -c result??
# 6  
Old 01-27-2006
Quote:
Originally Posted by little g
rsh vps-is1 vsh -Cvps.1 tappman -v1 -l1 status | grep -c "Down"

Is it possible to perform an 'if' test on the grep -c result??

Absolutely. Infact you dont need a grep -c to know whether the grep has been successful or not.

The exit status of grep maintains that information.

Quoting verbatim from man grep

Code:
       Normally, 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.

$? holds the exit status of grep.

Code:
rsh vps-is1 vsh -Cvps.1 tappman -v1 -l1 status | grep "Down"

if [[ $? == 0 ]] ; then
echo "We found Down.. Where do you want to go today ?
else
echo "Down not found. What do I do ?
fi ;


You could try this as well. But be careful.

Code:
(($?)) && { commands to be executed when grep did not find anything ; } || { set of commands to be executed after grep found Down ; }

# 7  
Old 01-27-2006
Wow, thank you so much.

Thanks for giving such a comprehensive reply, its really appreciated Smilie
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Inconsistent `ps -eaf -o args | grep -i sfs_pcard_load_file.ksh | grep -v grep | wc -l`

i have this line of code that looks for the same file if it is currently running and returns the count. `ps -eaf -o args | grep -i sfs_pcard_load_file.ksh | grep -v grep | wc -l` basically it is assigned to a variable ISRUNNING=`ps -eaf -o args | grep -i sfs_pcard_load_file.ksh |... (6 Replies)
Discussion started by: wtolentino
6 Replies

2. UNIX for Dummies Questions & Answers

Piping grep into awk, read the next line using grep

Hi, I have a number of files containing the information below. """"" Fundallinfo 6.3950 14.9715 14.0482 """"" I would like to grep for Fundallinfo and use it to read the next line? I ideally would like to read the three numbers that follow in the next line and... (2 Replies)
Discussion started by: Paul Moghadam
2 Replies

3. Shell Programming and Scripting

Diff between grep .* file name and grep '.*' filename

Hi, Can anyone let me know what is difference between grep .* foo.c grep '.*' foo.c I am not able to understand what is exact difference. Thanks in advance (2 Replies)
Discussion started by: SasDutta
2 Replies

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

5. Shell Programming and Scripting

AWK/GREP: grep only lines starting with integer

I have an input file 12.4 1.72849432773174e+01 -7.74784188610632e+01 12.5 9.59432114416327e-01 -7.87018212757537e+01 15.6 5.20139995965960e-01 -5.61612429666624e+01 29.3 3.76696387248366e+00 -7.42896194101892e+01 32.1 1.86899877018077e+01 -7.56508762501408e+01 35 6.98857157014640e+00... (2 Replies)
Discussion started by: chrisjorg
2 Replies

6. UNIX for Dummies Questions & Answers

Advanced grep'in... grep for data next to static element.

I have a directory I need to grep which consists of numbered sub directories. The sub directory names change daily. A file resides in this main directory that shows which sub directories are FULL backups or INCREMENTAL backups. My goal is to grep the directory for the word "full" and then... (2 Replies)
Discussion started by: SysAdm2
2 Replies

7. Shell Programming and Scripting

grep for certain files using a file as input to grep and then move

Hi All, I need to grep few files which has words like the below in the file name , which i want to put it in a file and and grep for the files which contain these names and move it to a new directory , full file name -C20091210.1000-20091210.1100_SMGBSC3:1000... (2 Replies)
Discussion started by: anita07
2 Replies

8. UNIX for Dummies Questions & Answers

| help | unix | grep (GNU grep) 2.5.1 | advanced regex syntax

Hello, I'm working on unix with grep (GNU grep) 2.5.1. I'm going through some of the newer regex syntax using Regular Expression Reference - Advanced Syntax a guide. ls -aLl /bin | grep "\(x\)" Which works, just highlights 'x' where ever, when ever. I'm trying to to get (?:) to work but... (4 Replies)
Discussion started by: MykC
4 Replies

9. UNIX for Dummies Questions & Answers

| help | unix | grep - Can I use grep to return a string with exactly n matches?

Hello, I looking to use grep to return a string with exactly n matches. I'm building off this: ls -aLl /bin | grep '^.\{9\}x' | tr -s ' ' -rwxr-xr-x 1 root root 632816 Nov 25 2008 vi -rwxr-xr-x 1 root root 632816 Nov 25 2008 view -rwxr-xr-x 1 root root 16008 May 25 2008... (7 Replies)
Discussion started by: MykC
7 Replies

10. Shell Programming and Scripting

MEM=`ps v $PPID| grep -i db2 | grep -v grep| awk '{ if ( $7 ~ " " ) { print 0 } else

Hi Guys, I need to set the value of $7 to zero in case $7 is NULL. I've tried the below command but doesn't work. Any ideas. thanks guys. MEM=`ps v $PPID| grep -i db2 | grep -v grep| awk '{ if ( $7 ~ " " ) { print 0 } else { print $7}}' ` Harby. (4 Replies)
Discussion started by: hariza
4 Replies
Login or Register to Ask a Question