grep regular expression to find = not ==


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers grep regular expression to find = not ==
# 1  
Old 04-15-2010
grep regular expression to find = not ==

I suspect this is commonly done, but haven't found the right combination of search terms to find the answer.

I want to grep for lines in .cpp files that contain only 1 '=' sign in an if statement. e.g.,
if (a = b) -- find this
if (a==b) -- don't find this

My attempt:
Code:
egrep "^if\b*\(.+=[^=]*" *.cpp

This finds lines with 1 =, but it is also finding lines with ==.

Also, if i use grep instead of egrep I get "RE error 42: \( \) imbalance".
# 2  
Old 04-15-2010
Code:
$ cat file
if (a = b) -- find this
if (a==b) -- don't find this
$ grep "if.*[^=]=[^=]" file
if (a = b) -- find this

# 3  
Old 04-15-2010
Code:
ant:/home/vbe $ cat file
a=b
a==b
a=c
c=a
b = c
c == a
ant:/home/vbe $ cat file|grep =|grep -v "=="
a=b
a=c
c=a
b = c

# 4  
Old 04-15-2010
doesn't work

Anbu23,
Thanks, but this finds != in if statements and lines with variable names that have 'if' in them.

---------- Post updated at 11:50 AM ---------- Previous update was at 11:35 AM ----------

Vbe,

May end up with 2 responses to you - i tried editing response to Anbu23 to add response to you, but it doesn't look like it took. At that time I hadn't found the combination that worked, but this does. Thanks for your response.

cat *.cpp | egrep "^if\b*\(.+=[^=]*" | egrep -v "=="

Part of the exercise was to understand regular expressions. I am still interested in why my expression wasn't eliminating the 2nd = if someone can figure that out. Also, I am still getting the unbalanced expression if I use grep. Any idea why that is?
# 5  
Old 04-15-2010
using anbu23 syntax:
Code:
grep "[^=]=[^=]" file

should work
# 6  
Old 04-15-2010
Regex:

Code:
if\s*\(\w+\s?=\s?\w+\)

# 7  
Old 04-15-2010
vbe,

I tried Anbu23's syntax by itself and it found too many non-matching lines. I tried it combined with what I had (adding in the [^=] before =)
Code:
egrep "^if\b*\(.+[^=]=[^=]*" *.cpp

but it still found the same lines it finds without his addition - i.e., ones with ==.
However, if I take away the final *, then it DOES work, which makes sense. I see why the final * makes it not work. And now I see why the first [^=] is required, so thank you both.

Neo,
Thank you for your suggestion - it is not matching any lines - but it will be helpful as a learning experience trying to tweak it.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Grep regular expression

I want to track only below: I am using below, but it doesn't work: (6 Replies)
Discussion started by: proactiveaditya
6 Replies

2. Shell Programming and Scripting

Grep + Regular expression or

Hi , I have few lines like A20120101.ANU.ZIP A20120401.ABC.ZIP A20120105.KJK.ZIP A20120809.JUG.ZIP A20120101.MAT.ZIP B20120301.ANU.XIP I want to filter by 1. Files starting with A and Ending With Z ( ^A.*.ZIP$) 2. And either ANU, or KJK or MAT in the file name. Hope my... (6 Replies)
Discussion started by: Anupam_Halder
6 Replies

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

4. Shell Programming and Scripting

Help with grep / regular expression

Hi, Input file: -13- -1er- -1xyz1- -1xz12- -2ab1- -2ab2-- -143- Code: grep '^*\-' input.txt Wrong output: -13- -1xyz1- -2ab1- -2ab2-- (4 Replies)
Discussion started by: dragon.1431
4 Replies

5. Shell Programming and Scripting

Using grep and regular expression to find class references in a c++ file

I'm trying to math all class references in a C++ file using grep with regular expression. I'm trying to know if a specific include is usuless or not, so I have to know if there is a refence in cpp. I wrote this RE that searches for a reference from class ABCZ, but unfortunately it isn't working... (0 Replies)
Discussion started by: passerby
0 Replies

6. Shell Programming and Scripting

grep and regular expression

Hi, I am executing a svnlook command to check to see if the following line exists. I need a regular expression to represent the line. A /test/test1/qa/test2/index.html A /test/test1/qa/test3/test.jpg A /test/test1/qa/test3/test1.jpg A /test/test1/qa/test4/test.swf I just need to extract... (9 Replies)
Discussion started by: kminkeller
9 Replies

7. Shell Programming and Scripting

grep regular expression

please can someone tell me what the following regrex means grep "^aa*$" <file> I thought this would match any word beginning with aa and ending with $, but it doesnt. Thanks in advance Calypso (7 Replies)
Discussion started by: Calypso
7 Replies

8. Shell Programming and Scripting

grep with regular expression

Hi, guys. I have one question, hope somebody can give me a hand I have a file called passwd, the contents of it arebelow: *********************** ... goldsimj:x:5008:200: goldsij2:x:5009:200: whitej:x:5010:201: brownj:x:5011:202: goldsij3:x:5012:204: greyp:x:5013:203: ...... (6 Replies)
Discussion started by: daikeyang
6 Replies

9. UNIX for Advanced & Expert Users

regarding grep regular expression

When i do ls -ld RT_BP* i am getting the following list. drwxrwx--- 2 user group 256 Oct 17 10:09 RT_BP809 drwxrwx--- 2user group 256 Oct 17 10:09 RT_BP809.O drwxrwx--- 2 user group 256 Oct 17 10:09 RT_BP810 drwxrwx--- 2user group 256 Oct... (2 Replies)
Discussion started by: ukatru
2 Replies

10. Shell Programming and Scripting

grep : regular expression

guys, my requirment goes like this: I have a file, and wish to filter out records where 1. The first letter is o or O and 2. The next 4 following letter should not be ther I do not wish to use pipe and wish to do it in one shot. The best expression I came up with is: grep ^*... (10 Replies)
Discussion started by: RishiPahuja
10 Replies
Login or Register to Ask a Question