Need help in Regular expression in bash shell


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need help in Regular expression in bash shell
# 1  
Old 07-26-2010
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.
Code:
 
 
grep -rn '^[0-9A-F]\{1,2\}\.[0-9A-F]\{1,2\}\.[0-9A-F]\{1,2\}\.[0-9A-F]\{1,2\}\$' *

This is not working as required. It is not fetching any output though the files contain MAC address.

If i give,

Code:
 
grep -rn '^[0-9A-F]\{1,2\}\.[0-9A-F]\{1,2\}\.[0-9A-F]\{1,2\}\.*' *

The above command is also giving 3.23.AS.AA

where S is not specified in the regular expression.
# 2  
Old 07-26-2010
You are missing a dot at this position:
Code:
grep -rn '^[0-9A-F]\{1,2\}\.[0-9A-F]\{1,2\}\.[0-9A-F]\{1,2\}\.*' *
                                                              ^
                                                              |
                                                            here

You want
Code:
\..*

but you have
Code:
\.*

There is also a nice POSIX expression for hexadecimal numbers:
Code:
[[:xdigit:]]

Just a side note regarding your topic (no biggie - just to clarify):
This regular expressions are from the grep command, not the bash shell Smilie
# 3  
Old 07-26-2010
Thanks Zaxxon...

The second part is solved.

Can you please look at the first part.

Code:
grep -rn '^[0-9A-F]\{1,2\}\.[0-9A-F]\{1,2\}\.[0-9A-F]\{1,2\}\.[0-9A-F]\{1,2\}\$' *

I want to search for patterns XX.XX.XX.XX
Where X can be hexadecimal numbers.
# 4  
Old 07-26-2010
Code:
grep -Ern "\<[0-9A-F]{1,2}(\.[0-9A-F]{1,2}){3}\>" urfile

# 5  
Old 07-26-2010
Thanks rdcwayx... Smilie
This is working if the MAC address is in the beginning of the line...

Suppose if the MAC adrress in between, it is not shown in the output Smilie
# 6  
Old 07-26-2010
I see no further problem so far:

Code:
$> cat infile
lalala
here is a mac address 00.30.05.be.c5.bc ok?
rubbish
here is not a mac address 00.30.0s.be.c5.bc ok?
another 00.30.05.be.c5.b1 ok?
litter
$> grep -i '[0-9A-F]\{1,2\}\.[0-9A-F]\{1,2\}\.[0-9A-F]\{1,2\}\..*' infile
here is a mac address 00.30.05.be.c5.bc ok?
another 00.30.05.be.c5.b1 ok?

Smilie

After adding the 2nd dot there was no problem anymore.
# 7  
Old 07-26-2010
Code:
# cat macfile
AF.86.3D.91.
3.23.AS.AA

you can try this Smilie

Code:
# grep -rn '[0-9a-fA-F][0-9a-fA-F].\{4\}' macfile
1:AF.86.3D.91.



---------- Post updated at 04:30 PM ---------- Previous update was at 04:28 PM ----------

Code:
# cat macfile
lalala
here is a mac address 00.30.05.be.c5.bc ok?
rubbish
here is not a mac address 00.30.0s.be.c5.bc ok?
another 00.30.05.be.c5.b1 ok?
litter

Code:
# grep -rn '[0-9a-fA-F][0-9a-fA-F].\{4\}' macfile
2:here is a mac address 00.30.05.be.c5.bc ok?
4:here is not a mac address 00.30.0s.be.c5.bc ok?
5:another 00.30.05.be.c5.b1 ok?

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

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

3. UNIX for Advanced & Expert Users

sed: -e expression #1, char 0: no previous regular expression

Hello All, I'm trying to extract the lines between two consecutive elements of an array from a file. My array looks like: problem_arr=(PRS111 PRS213 PRS234) j=0 while } ] do k=`expr $j + 1` sed -n "/${problem_arr}/,/${problem_arr}/p" problemid.txt ---some operation goes... (11 Replies)
Discussion started by: InduInduIndu
11 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

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

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

9. Shell Programming and Scripting

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.... (5 Replies)
Discussion started by: sunitachoudhury
5 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