how to use regular expression in Bash Shell Scripting


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting how to use regular expression in Bash Shell Scripting
# 1  
Old 03-13-2008
how to use regular expression in Bash Shell Scripting

Hi,

Actually i have written one test.sh (shell program) in bash.

Here i have a variables $a which stored the value package1.

Now I want to write a regular expression inside the if command that "if $a variable contains letter p in the begining of the value package1 then it is coming true. else it is coming false". For this i have written the following shell script.

a=package1
if grep "^p" $a
then
echo "true"
else
echo "false"
fi
echo "hello jim" | sed -e 's/hello/bye/'

But when i am running the following test.sh then i am getting the following error.

grep: can't open package1
false
bye jim


can anybody help me please to rectify this problem. Please help me. It is very urgent.
# 2  
Old 03-13-2008
Quote:
Originally Posted by sunitachoudhury
Hi,

Actually i have written one test.sh (shell program) in bash.

Here i have a variables $a which stored the value package1.

Now I want to write a regular expression inside the if command that "if $a variable contains letter p in the begining of the value package1 then it is coming true. else it is coming false". For this i have written the following shell script.

a=package1
if grep "^p" $a
then
echo "true"
else
echo "false"
fi
echo "hello jim" | sed -e 's/hello/bye/'

But when i am running the following test.sh then i am getting the following error.

grep: can't open package1
false
bye jim


can anybody help me please to rectify this problem. Please help me. It is very urgent.
Grep expects a file name. In your case, package1 is not a file and hence the grep error.

You should rather do it as

Code:
echo $a | grep "^p"
if [[ $? -eq 0 ]] ; then
..
..
..


Last edited by vino; 03-13-2008 at 02:10 AM.. Reason: Typo
# 3  
Old 03-13-2008
Code:
# a=package1
# case $a in p* ) echo "true" ;; * ) echo "no" ;;esac
true

# 4  
Old 03-13-2008
thanks vino. Now it is working fine.But i want to know one thing that can you please explain the logic of this code, if you don't mind.

echo $2 | grep "^p"
if [[ $? -eq 0 ]] ; then


Thanks
Sunita
# 5  
Old 03-13-2008
Hi Vino

Actually i wrote the following code, given by you.

Input is
a=package1
echo $2 | grep "^b"
echo $2
echo "$2"
if [[ $2 -eq 0 ]] ;
#if grep "^p" $a
then
echo "true"
else
echo "false"
fi


and the output of this is coming as


true
bye jim


here two spaces are coming in the $2 variable.
# 6  
Old 03-13-2008
Quote:
Originally Posted by sunitachoudhury
Hi Vino

Actually i wrote the following code, given by you.

Input is
a=package1
echo $2 | grep "^b"
echo $2
echo "$2"
if [[ $2 -eq 0 ]] ;
#if grep "^p" $a
then
echo "true"
else
echo "false"
fi


and the output of this is coming as


true
bye jim


here two spaces are coming in the $2 variable.
There was a typo in my earlier post. It should read $a instead of $2.
$? stands for the exit code of a command that was issued. For grep, the exit code is 0 if a successful pattern was matched. Else 1 will be returned.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

SHELL: UNIX : Ls regular expression not working when used with variables

If i do below command in unix prompt which static values (ie 27..97), it is working fine and gives desired output >ls -d $WORKDIR/batch/somefilename_{27..97}.* 2>/dev/null somefilename_27.sometxt somefilename_28.sometxt somefilename_29.sometxt .. somefilename_97.sometxt But if i want... (2 Replies)
Discussion started by: haiderali
2 Replies

2. Shell Programming and Scripting

Hi im new to bash scripting I want to know what does the regex expression do ??

# check host value regex='^(||1|2|25)(\.(||1|2|25)){3}$' if ')" != "" ]; then if ]; then echo host $host not found exit 4 fi elif ]; then echo $host is an invalid host address exit 5 fi (1 Reply)
Discussion started by: kevin298
1 Replies

3. Shell Programming and Scripting

incorporating a regular expression statement in a shell script (.sh)

I do have a shell file where I call many unix commands . I would like to add a regular expression step in that shell file, where a text file, say Test.txt has to be openned and all the :'s should be replaced. Basically apply the follwoing regular expression: :%s/://g to that particular text... (2 Replies)
Discussion started by: Lucky Ali
2 Replies

4. Shell Programming and Scripting

regular expression with shell script to extract data out of a text file

hi i am trying to extract some specific data out of a text file using regular expressions with shell script that is using a multiline grep .. and the tool i am using is pcregrep so that i can get compatibility with perl's regular expressions for a sample data like this, i am trying to grab... (6 Replies)
Discussion started by: vemkiran
6 Replies

5. Programming

Perl: How to read from a file, do regular expression and then replace the found regular expression

Hi all, How am I read a file, find the match regular expression and overwrite to the same files. open DESTINATION_FILE, "<tmptravl.dat" or die "tmptravl.dat"; open NEW_DESTINATION_FILE, ">new_tmptravl.dat" or die "new_tmptravl.dat"; while (<DESTINATION_FILE>) { # print... (1 Reply)
Discussion started by: jessy83
1 Replies

6. Shell Programming and Scripting

search a regular expression and match in two (or more files) using bash

Dear all, I have a specific problem that I don't quite understand how to solve. I have two files, both of the same format: XXXXXX_FIND1 bla bla bla bla bla bla bla bla bla bla bla bla ======== (return) XXXXXX_FIND2 bla bla bla bla bla bla (10 Replies)
Discussion started by: TheTransporter
10 Replies

7. Shell Programming and Scripting

Need help in Regular expression in bash shell

hi, I have written a script to search MAC address in a given directory. MAC address would be in format XX.XX.XX.XX. The digits contain hexadecimal numbers. For this i have used grep as follows. grep -rn '^\{1,2\}\.\{1,2\}\.\{1,2\}\.\{1,2\}\$' * This is not working as required.... (17 Replies)
Discussion started by: flamingo_l
17 Replies

8. Shell Programming and Scripting

problem with Regular expression as input in shell script

Hi, I have script which will take a string as input and search in a file. But when I want to search a pattern which has special characters script is ignoring it. For example: I want to search a pattern "\.tumblr\.com". shell script is removing \ (backslah) and trying to search... (7 Replies)
Discussion started by: Anjan1
7 Replies

9. Shell Programming and Scripting

Regular expression matching in BASH (equivalent of =~ in Perl)

In Perl I can write a condition that evaluates a match expression like this: if ($foo =~ /^bar/) { do blah blah blah } How do I write this in shell? What I need to know is what operator do I use? The '=~' doesn't seem to fit. I've tried different operators, I browsed the man page for... (3 Replies)
Discussion started by: indiana_tas
3 Replies

10. Shell Programming and Scripting

using regular expression an shell script!!

I want to check if the first argument of my shell script starts with a specifiec string? Any Idea?? Thank u (3 Replies)
Discussion started by: andy2000
3 Replies
Login or Register to Ask a Question