Grep exact match without period or other special characters


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Grep exact match without period or other special characters
# 1  
Old 03-21-2016
Grep exact match without period or other special characters

If I have a file like the following

Code:
abc.1
abc
abc_1
abc..1
abc*1
abc@1
abc def ghr
def......
ddef 5466 def ed 
def** 123445

I`m trying to find exact words from the list

Code:
abc
def

Code:
grep -wf file2 file1

I get

Code:
abc.1
abc
abc..1
abc*1
abc@1
abc def ghr
def......
ddef 5466 def ed
def** 123445


But I want to return the following 2 lines as exact word matches.

Code:
abc
ddef 5466 def ed


Is there any grep option for this?
# 2  
Old 03-21-2016
for exact word matches, try:
Code:
awk '
NR==FNR {a[$1]=$1; next;}
{l=0; for (i=1; i<=NF; i++) if ($i in a) {print ; next;}}
' words_file infile

for exact word match count of 1 (as shown), try:
Code:
awk '
NR==FNR {a[$1]=$1; next;}
{l=0; for (i=1; i<=NF; i++) ($i in a) ? l++ : 0; if (l==1) print}
' words_file infile


Last edited by rdrtx1; 03-21-2016 at 03:50 PM..
This User Gave Thanks to rdrtx1 For This Post:
# 3  
Old 03-21-2016
thanks a lot for the awk solution, just curious this cant be accomplished using a simple grep syntax with options ?
# 4  
Old 03-21-2016
The following is an attempt:
Code:
egrep '(^|[[:blank:]]+)(abc|def)([[:blank:]]+|$)' infile

But this also prints lines with two or more matching words.
Regarding the awk solution, I like the following better
Code:
awk '
NR==FNR {a[$1]; next;}
{L=0; for (i=1; i<=NF; i++) if ($i in a) L++;} L==1
' words_file infile

# 5  
Old 03-21-2016
For grep, file words_file has to have the patterns specified exactly. Example:

words_file:
Code:
\(\W\)abc\(\W\|$\)
\(\W\)def\(\W\|$\)

then:
Code:
grep -f words_file infile


Last edited by rdrtx1; 03-21-2016 at 07:36 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Grep for an exact match in a file

I am currently having some issues while trying to grep for a exact string inside a file. I have tried doing this from command line and things work fine i.e. when no match is found, return code=1 but when its done as part of my script it returns 0 for the same command - I dont know if there is an... (6 Replies)
Discussion started by: Ads89
6 Replies

2. Shell Programming and Scripting

Grep exact match

Hello! I have 2 files named tacs.tmp and tacDB.txt tacs.tmp looks like this 0 10235647 102700 106800 107200 1105700 tacDB.txt looks like this 100100,Mitsubishi,G410,Handheld,,0,0,0 100200,Siemens,A53,Handheld,,0,0,0 100300,Sony Ericsson,TBD (AAB-1880030-BV),Handheld,,0,0,0... (2 Replies)
Discussion started by: Cludgie
2 Replies

3. Shell Programming and Scripting

awk match shell variable that contains special characters?

How to match a shell variable that contains parenthesis (and other special characters like "!") file.txt contains: Charles Dickens Matthew Lewis (writer) name="Matthew Lewis (writer)"; awk -v na="$name" ' $0 ~ na' file.txt Ideally this would match $name in file.txt (in this... (3 Replies)
Discussion started by: Mid Ocean
3 Replies

4. Shell Programming and Scripting

Grep multiple exact match, do not display lines

Hi, Need help to grep the following from a file x. I just want to grep exact match not lines and not partial word. CONFSUCCESS CONFFAIL CONFPARTIALSUCCESS >cat x xczxczxczc zczczcxx CONFSUCCESS czczczcczc czxxczxzxczcczc CONFFAIL xczxczcxcczczc zczczczcz CONFPARTIALSUCCESS czczxcxzc ... (4 Replies)
Discussion started by: rajeshwebspere
4 Replies

5. Shell Programming and Scripting

Searching for exact match using grep

I am searching for an exact match on a value read from another file to lookup an email address in another file. The file being checked is called "contacts" and it has Act #, email address, and contact person. 1693;abc1693@yahoo.comt;Tommy D 6423;abc6423@yahoo.comt;Jim Doran... (2 Replies)
Discussion started by: ziggy6
2 Replies

6. Shell Programming and Scripting

Grep two words with exact match

HI Input : Counters Counter Int Ints Counters Counters Ints Ints I want to grep Counter|Int Output : Counter (1 Reply)
Discussion started by: pareshkp
1 Replies

7. Shell Programming and Scripting

grep and sed exact match questions

This post was previously mistaken for homework, but is actually a small piece of what I working on at work. Please answer if you can. QUESTION1 How do you grep only an exact string. I am using Solaris10 and do not have any GNU products installed. Contents of car.txt CAR1_KEY0 CAR1_KEY1... (2 Replies)
Discussion started by: thibodc
2 Replies

8. UNIX for Dummies Questions & Answers

grep and sed exact match questions

This was mistaken as homework in a different forum, but is not. These are questions that are close to what I am trying to do at work. QUESTION1: How do you grep only an exact string. I am using Solaris10 and do not have any GNU products installed. Contents of car.txt CAR1_KEY0 CAR1_KEY1... (1 Reply)
Discussion started by: thibodc
1 Replies

9. Solaris

grep exact match

Hi This time I'm trying to grep for an exact match e.g cat.dog.horse.cow.bird.pig horse.dog.pig pig.cat.horse.dog horse dog dog pig.dog pig.dog.bird how do I grep for dog only so that a wc -l would result 2 in above case. Thanks in advance ---------- Post updated at 06:33 AM... (4 Replies)
Discussion started by: rob171171
4 Replies

10. UNIX for Advanced & Expert Users

Exact Match thru grep ?????

hey..... i do have text where the contents are like as follows, FILE_TYPE_NUM_01=FILE_TYPE=01|FILE_DESC=Periodic|FILE_SCHDL_TYPE=Daily|FILE_SCHDL=|FILE_SCHDL_TIME=9:00am|RESULTS=B FILE_TYPE_NUM_02=FILE_TYPE=02|FILE_DESC=NCTO|FILE_SCHDL_TYPE=Daily|FILE_SCHDL=|FILE_SCHDL_TIME=9:00am|RESULTS=M... (2 Replies)
Discussion started by: manas_ranjan
2 Replies
Login or Register to Ask a Question