How to grep the exact name?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to grep the exact name?
# 1  
Old 02-22-2011
How to grep the exact name?

I'm attempting to perform an exact match on an input data column with another input file but cannot figure out how to code the "grep" statement to handle 2 specific scenarios. I’m capturing the first column of data from $ifile2 into variable $rule and using it to perform a “grep” on $ifile3 to write all of the matching records to $ofilegrp. If no matches are found then I send an email indicating an invalid value was found in $ifile2.

In the example of data below, an error email should be sent when the lookup for America is performed, while the lookup for Latin America should return 2 matching records. I have not been able to code a “grep” statement that works for both scenarios.
Any suggestions……

The contents of $ifile2 are as follows:
Code:
America,john.brown@yahoo.com,lucy.lee@yahoo.com,
Latin America,john.brown@yahoo.com,lucy.lee@yahoo.com,
Pacific,john.brown@yahoo.com,,
Pacific,lucy.lee@yahoo.com,,

The contents of $ifile3 are as follows:
Code:
Pacific,AUA
Pacific,BDD
Pacific,CMB
Pacific,CTX
Pacific,D06
Latin America,BRU
Latin America,CUL

I have tried the following "grep" statements:
Code:
grep -x "\<$rule\>" $ifile3 > $ofilegrp
grep "\s$rule\s" $ifile3 > $ofilegrp
grep -x '$rule' $ifile3 > $ofilegrp     
grep '$rule' $ifile3 > $ofilegrp
grep -x "$rule" $ifile3 > $ofilegrp     
grep "$rule" $ifile3 > $ofilegrp ==> this is the only one that works for "Latin America" but does not work for "America"
grep -x '['$rule']' $ifile3 > $ofilegrp
grep '['$rule']' $ifile3 > $ofilegrp
grep -x " *$rule *$" $ifile3 > $ofilegrp
grep " *$rule *$" $ifile3 > $ofilegrp


Last edited by joeyg; 02-22-2011 at 01:55 PM.. Reason: codetage please around input/output
# 2  
Old 02-22-2011
I think you just need another command

After your first, do something like:

Code:
$ wc -l sample9.txt
0 sample9.txt

$ if [ `wc -l sample9.txt | cut -d" " -f1` -eq 0 ] ; then echo "Error"; fi
Error

I show that my file sample9.txt is empty, as you might be after a search for America. My next command checks to see if any lines of data, and if zero then output Error.
# 3  
Old 02-22-2011
How to grep the exact name

Yes, I'm doing that to validate the results. However, the problem is that I can't figure out the exact grep statement to use that will work correctly when it encounters America and Latin America. I listed the various grep examples I tried to use and only one of them works when it encounters Latin America but the same grep statement does not work when it encounters America. The remaining grep examples all work correctly when they encounter America but do not work when they encounter Latin America.
# 4  
Old 02-22-2011
Code:
grep "^$rule," "$ifile3" > "$ofilegrp"

I'm not a fan of expanding parameters into a regular expression context unless I'm absolutely sure that metacharacters will not occur. In my opinion, it's preferable to use simple string comparison:

Code:
awk -F, -v r="$rule" '$1==r' "$ifile3" > "$ofilegrp"

Regards,
Alister
This User Gave Thanks to alister For This Post:
# 5  
Old 02-22-2011
Code:
nawk -F, 'FNR==NR {f3[$1];next} { if($1 in f3) print >out;else print}' OFS=, out=ofilegrp ifile3 ifile2

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

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

2. UNIX for Dummies Questions & Answers

Grep exact value

Hello All, I have a file all_info.txt Date Owner Filename 03/25/2014 mycomp\royale myfile_ goodfile_sec_20140324_c.zip 03/25/2014 mycomp\royale myfile_goodfile_sec_20140324_c.cpt 03/25/2014 mycomp\royale1 ... (9 Replies)
Discussion started by: kumar30213
9 Replies

3. Shell Programming and Scripting

Re: grep exact search

Hi, x=GATE ps -ef|grep pmon grid 552 1 0 Aug08 ? 00:00:51 asm_pmon_+ASM1 oracle 4314 1 0 Aug08 ? 00:04:08 ora_pmon_GATE1 oracle 5018 1351 0 10:14 pts/1 00:00:00 grep pmon oracle 7329 1 0 Aug08 ? 00:02:19 ora_pmon_NRID1 ps... (3 Replies)
Discussion started by: rcc50886
3 Replies

4. Shell Programming and Scripting

QUESTION1: grep only exact string. QUESTION2: find and replace only exact value with sed

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 CAR2_KEY0 CAR2_KEY1 CAR1_KEY10 CURRENT COMMAND LINE: WHERE VARIABLE CAR_NUMBER=1 AND KEY_NUMBER=1 grep... (1 Reply)
Discussion started by: thibodc
1 Replies

5. UNIX for Dummies Questions & Answers

grep exact

FILE: #test file# server1 10.1.1.1 server2 10.1.1.2 server2-prv 10.1.1.3 grep -w "server2" {filename} Returns: server2 10.1.1.2 server2-prv 10.1.1.3 How would you just get it to return just the exact match line?: server2 10.1.1.2 Thanks! (4 Replies)
Discussion started by: trimike
4 Replies

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

7. Shell Programming and Scripting

How to use grep to get an exact string?

Hi there, I've search this forum and find this problem could have been solved by, grep -ho "num=*" input_data The input_data is, 1\11\num1=100\num2=200\newnum1=220\\@ however, what I have got is , num1=100 num1=220 how to get the exact string, (4 Replies)
Discussion started by: liuzhencc
4 Replies

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

9. Shell Programming and Scripting

How to grep the exact name?

Hi All Here is one o/p from a program I have ... Can someone tell me the way so that I get only the output by the user "li" not the other users which have "li" in the name. Surely I dont like the idea Thanks a lot to all in advance C Saha (3 Replies)
Discussion started by: csaha
3 Replies

10. UNIX for Dummies Questions & Answers

grep - exact

I'm trying to use grep to search for a specific string. Given the following strings: .A BAGM4 0101 Z DH1300/PPD T/SF T/SD 10 .A CLUM4 0101 Z DH1300/PP T/SF T/SD 9 .A MQT 0101 Z DH1200/PPK T/SFK 2.0/SD 15 I only want to get the string that contains PPD. If I do the command: grep PPD... (9 Replies)
Discussion started by: wxornot
9 Replies
Login or Register to Ask a Question