grep option to print the first match of each member of a list?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting grep option to print the first match of each member of a list?
# 1  
Old 11-22-2011
grep option to print the first match of each member of a list?

Hello,
How to grep only the first match of each (unique) member of a list from the file?
Say member.list contains:
Code:
member1
member2
member3

and table.tab which is sorted by the first 2nd and then 3rd column.
Code:
member1 1.2 234
member1 1.1 234
member2 3.3 111
member2 2.3 222
member2 2.3 111
member3 1.0 123
member3 1.0 134

and output is:
Code:
member1 1.2 234
member2 3.3 111
member3 1.0 123

Option -m or -c seems not what I need. Thanks a lot!

Yifang
# 2  
Old 11-22-2011
grep has no recall, and can't do logical statements.

how about awk, which has variables for recall and can do logical statements:

Code:
awk 'BEGIN { while(getline<"datafile") M[$1]=1 }; { if(M[$1]==1) { print; M[$1]=2 } }' listfile

# 3  
Old 11-22-2011
I thought there might be a option for grep. Of course this awk work great except the print---I need the whole row of the first match, which can be fixed I think.
Thank you very much.
# 4  
Old 11-29-2011
In what way doesn't it work? 'print' ought to print the entire row.
# 5  
Old 11-29-2011
Try this...
Code:
while read line; do grep -m 1 $line table.tab; done < member.lists

btw, Corona's awk solution works for me...

--ahamed
# 6  
Old 11-29-2011
swapped the order of the two files!

Sorry!
After your last email I double checked the script and found out the mistake I made was the swapped order of the two files, which should be:
Code:
awk 'BEGIN { while(getline<"listfile") M[$1]=1 }; { if(M[$1]==1) { print; M[$1]=2 } }' datafile

Thanks a lot!
Yifang
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Grep command to search a regular expression in a line an only print the string after the match

Hello, one step in a shell script i am writing, involves Grep command to search a regular expression in a line an only print the string after the match an example line is below /logs/GRAS/LGT/applogs/lgt-2016-08-24/2016-08-24.8.log.zip:2016-08-24 19:12:48,602 ERROR... (9 Replies)
Discussion started by: Ramneekgupta91
9 Replies

2. Shell Programming and Scripting

Need to print the next word from the same line based on grep string condtion match.

I need to fetch particular string from log file based on grep condition match. Actual requirement is need to print the next word from the same line based on grep string condtion match. File :Java.lanag.xyz......File copied completed : abc.txt Ouput :abc.txt I have used below... (5 Replies)
Discussion started by: siva83
5 Replies

3. UNIX for Dummies Questions & Answers

Grep -B used with -f? (Searching a file using a list of terms, output is lines before each match)

(1 Reply)
Discussion started by: Twinklefingers
1 Replies

4. Shell Programming and Scripting

Grep range of lines to print a line number on match

Hi Guru's, I am trying to grep a range of line numbers (based on match) and then look for another match which starts with a special character '$' and print the line number. I have the below code but it is actually printing the line number counting starting from the first line of the range i am... (15 Replies)
Discussion started by: Kevin Tivoli
15 Replies

5. Solaris

Using grep to print just the pattern match

Hi all, Is it possible for grep to output just the pattern match and not the whole line when it comes across a match? I know you can adjust the number of trailing or leading lines that are printed, but am yet to find anything that outputs just the pattern match. Cheers, Tim (5 Replies)
Discussion started by: muzzaw
5 Replies

6. UNIX for Dummies Questions & Answers

Lynx Grep Pattern Match 2 conditions Print from Start to End

I am working on a scraping project and I am stuck at this tiny grep pattern match. Sample text : FPA List. FPA List. FPA List. FPA List. FPA List. FPA List. FPA List. FPA List. ABC Personal Planning Catherine K. Wat Cath Wat Catherine K. Wat Catherine K. Wat IFRAME:... (8 Replies)
Discussion started by: kkiran
8 Replies

7. UNIX for Dummies Questions & Answers

grep N lines after match and then print them on 1 line each

Hello I have a silly question. I need to grep a match in text file and then print 5 lines after it. grep -A 5 .... do it. OK The next thing I can not handle is I need each output to be on 1 line match line2 line3 line4 line5 match line2 line3 line4 line5 etc.. I will really... (10 Replies)
Discussion started by: alekkz
10 Replies

8. Shell Programming and Scripting

grep N lines after match and then print them on 1 line each

Hello I need some help with this job. file.txt ----- cut ---- TARGET 13/11/08 20:43:21 POINT 1 MOVE 8 772102y64312417771 TARGET 13/11/08 21:10:01 POINT 2 MOVE 5 731623jjd12njhd ----- cut ---- this is the example. i need to grep for the word TARGET and print next 4 lines like... (1 Reply)
Discussion started by: alekkz
1 Replies

9. Shell Programming and Scripting

Awk+Grep Input file needs to match a column and print the entire line

I'm having problems since few days ago, and i'm not able to make it works with a simple awk+grep script (or other way to do this). For example, i have a input file1.txt: cat inputfile1.txt 218299910417 1172051195 1172070231 1172073514 1183135117 1183135118 1183135119 1281440202 ... (3 Replies)
Discussion started by: poliver
3 Replies

10. HP-UX

Print Problem in UNIX. Need to know the option to specify the print paper size

Hi, Could any one please let me know what is the option available in UNIX to print by specifying the paper size? We are using Unix11i. I could n't see any option specified in the 'lp' command to print the report by specifying the size of the paper. It would be of great help to me, if... (1 Reply)
Discussion started by: ukarthik
1 Replies
Login or Register to Ask a Question