Grep in Shell script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Grep in Shell script
# 1  
Old 01-20-2011
Grep in Shell script

hi guys

very new to this game so excuse my ignorance. I need to create a script that simply greps for a text string and then outputs a message depending on whether the text string is there or not. The script I have setup is below, but whenever I run it I get the following error:

Code:
./LogCheck.sh[8]: TIMEOUT=:  not found
./LogCheck.sh[10]: ${TIMEOUT}: bad substitution

Sure this is a schoolboy error, but any advise greatly appreciated

Thanks,
A.

Code:
#!/bin/ksh
##################################################################################################
                                                                                                #
# This script checks the log file for timeouts                           #
##################################################################################################
 
TIMEOUT=`tail -5000 /dir1/logs/logfile.log | grep "has timed out and is not currently tradeable" | tail -1`;
 
echo ${TIMEOUT};
 
if [ ! -z ${TIMEOUT} ]; then
        echo "Timeout Alert";
else
        echo "No Timeouts";

Moderator's Comments:
Mod Comment Please use [code] and [/code] tags when posting code, data or logs etc. to preserve formatting and enhance readability, thanks.

Last edited by zaxxon; 01-20-2011 at 08:03 AM.. Reason: code tags
# 2  
Old 01-20-2011
Try this,

Code:
TIMEOUT=`tail -5000 /dir1/logs/logfile.log | grep "has timed out and is not currently tradeable" | tail -1`;
echo ${TIMEOUT};
[[ ! -z ${TIMEOUT} ]] && echo "Timeout Alert" || echo "No Timeouts"

# 3  
Old 01-20-2011
Also you need to avoid those semi-colons, their unnecessary in shell scripting and double quoting the variable ${TIMEOUT} in the if condition is a good practice..and finally there is no closing if (fi)
Code:
TIMEOUT=`tail -5000 /dir1/logs/logfile.log | grep "has timed out and is not currently tradeable" | tail -1`
echo ${TIMEOUT}
 
if [ ! -z "${TIMEOUT}" ]
then
        echo "Timeout Alert"
else
        echo "No Timeouts"
fi

# 4  
Old 01-20-2011
You can also do this:
Code:
if TIMEOUT=$(tail -5000 /dir1/logs/logfile.log | grep "has timed out and is not currently tradeable" | tail -1)
then
  echo "Timeout Alert"
else
  echo "No Timeouts"
fi

if you need the TIMEOUT variable afterwards, or
Code:
if tail -5000 /dir1/logs/logfile.log | grep -q "has timed out and is not currently tradeable" 
then
  echo "Timeout Alert"
else
  echo "No Timeouts"
fi

if you don't need the variable..

==
Edit: The second case will work, but the first will not because of the tail -1 command which will return 0 even if there is no match

Last edited by Scrutinizer; 01-20-2011 at 11:35 AM..
# 5  
Old 01-20-2011
Thanks for getting back, Scrutinizer - looks a little better - when I try your script with the TIMEOUT variable, I get his message:

./LogCheck.sh[8]: TIMEOUT=: not found
No Timeouts

Is the "not found" message just saying that is just can't find the "has timed out string" in the log file?

Thanks

---------- Post updated at 03:30 PM ---------- Previous update was at 03:09 PM ----------

jsut played again and it works Ok thanks. Appreciate your help
# 6  
Old 01-20-2011
Actually I realized the first command will not work properly because of the tail command, I edited the post...
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Speeding up shell script with grep

HI Guys hoping some one can help I have two files on both containing uk phone numbers master is a file which has been collated over a few years ad currently contains around 4 million numbers new is a file which also contains 4 million number i need to split new nto two separate files... (4 Replies)
Discussion started by: dunryc
4 Replies

2. Shell Programming and Scripting

Shell Script with Grep

Hi guys - below is my script that is checking for current file, size and timestamp. However I added a "grep" feature in it (line in red), but not getting the desired result. I am trying to acheive in output: 1. Show me the file name, timestamp, size and grep'ed words It would be a... (2 Replies)
Discussion started by: DallasT
2 Replies

3. Shell Programming and Scripting

How to grep sql error in shell script and exit the script?

I need help in the following script. I want to grep the sql errors insert into the error table and exit the shell script if there is any error, otherwise keep running the scripts. Here is my script #!/bin/csh -f source .orapass set user = $USER set pass = $PASS cd /opt/data/scripts echo... (2 Replies)
Discussion started by: allinshell99
2 Replies

4. Shell Programming and Scripting

Simple Shell Script to Grep

Hi guys, I have written this script, however the outcome is invalid. It contains grep search that is not needed: Script: #!/bin/bash #this is a test script FILES=$(ls /home/student/bin/dir1/*) GREPFUNC=$(grep -E -i "login|Successfully" ORProxyTC`date '+%m%d%Y'`*.txt/ ${FILES})... (14 Replies)
Discussion started by: DallasT
14 Replies

5. Shell Programming and Scripting

Grep command in shell script

Hi, I have written the following shell script - Error_String="error" var1="| grep -v note1 | grep -v note2" grep -i $Error_String /users/mqm/Pwork/Err/*.out $var1 The above script gives error saying "grep: can't open | grep: can't open grep grep: can't open -v" etc In my program... (3 Replies)
Discussion started by: prasannasupp
3 Replies

6. Shell Programming and Scripting

Shell script grep help

Hey there, newbie question : echo "::kmastat" | /usr/bin/mdb -k | grep Total | grep "kmem_*" Total 17326080 432853 0 Total 426508288 65458 0 Total 704757760 1572001732 0 Total ... (11 Replies)
Discussion started by: shriyer
11 Replies

7. Shell Programming and Scripting

Grep or Tail in shell script

Hi, I am writing a shell script that checks catalina logs on a production system and mails me if it detects errors. It greps the logs for known errors which i have defined as variables. The problem is the logs are huge, approx 30,000 before they rotate. So I am forced to use grep instead... (3 Replies)
Discussion started by: Moxy
3 Replies

8. Shell Programming and Scripting

grep in Shell script

Hello I do want to write a script which will check any errors say "-error" in the log file then have to send email to the concern person . And the concern person will correct the error . Next time if the script runs eventhough the error has been corrected it will ... (1 Reply)
Discussion started by: Krishnaramjis
1 Replies

9. Shell Programming and Scripting

grep, sed in a shell script

Hi, I have a problem with a simple script I am trying to write. I want a user to type grep, sed commands that are then stored in variables. Those variables are stored in a function, and the function is then called to execute the commands. The idea is that the user does it step by step. ... (4 Replies)
Discussion started by: Trufla
4 Replies

10. Shell Programming and Scripting

Using Grep in a Shell Script

Hi everyone, Im trying to write a Shell script that basically creates a set of files based on a file with many records. For example if a file called dummy has the following content: a.txt 1st line of a's text file 2nd line of a's text file 3rd line of a's text file b.txt 1st line of b's... (8 Replies)
Discussion started by: nbvcxzdz
8 Replies
Login or Register to Ask a Question