grep variable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting grep variable
# 1  
Old 09-22-2012
grep variable

I've got a file that I'm trying to grep through that looks like this:

Code:
alpha1
alpha2
alpha3
beta1
beta2
gamma5
gamma6
gamma7
gamma8
gamma9

and I want the output to only contain the line with the highest value for each, so the output I want is:

Code:
alpha3
beta2
gamma9

I also need to make it understand that there may be new values like delta and epsilon etc added down the track and to just extract the highest numbered line.

how do I do this? really pulling my hair out, I've googled for hours. thanks so much!

Last edited by Scrutinizer; 09-22-2012 at 07:32 AM.. Reason: code tags
tiberione
# 2  
Old 09-22-2012
Code:
awk '/^[[:alpha:]]+[[:digit:]]+/{
match($0,/[[:alpha:]]+/);w=substr($0,RSTART,RLENGTH)
match($0,/[[:digit:]]+/);n=substr($0,RSTART,RLENGTH)
if(n+0>=maxi[w]+0) {maxi[w]=n;rec[w]=$0}
}END{
for(i in rec) print rec[i]
}' file

This User Gave Thanks to elixir_sinari For This Post:
# 3  
Old 09-22-2012
thanks for your help.

I'm quite new at this and the command I'm using is just a bash command that pipes the output to the next stage. i'm not sure what to do with the new lines since i'm just adding this to my existing command and entering it in terminal.
tiberione
# 4  
Old 09-22-2012
For using in a chain of pipes you can put the awk program (the stuff between the two ' chars but without them) into a file (say: "awkfile") and then use it like
Code:
cmd|cmd|awk -f awkfile|cmd ...

This User Gave Thanks to RudiC For This Post:
# 5  
Old 09-22-2012
Hammer & Screwdriver

Smilie

Code:
sort file | awk '{if($0 !~ a){print k;max=0};{s=$0;a=$0;gsub("[a-z]","",s);gsub("[0-9]","",a);if(s > max){max=s;k=$0}}}END{print k}'

This User Gave Thanks to pamu For This Post:
# 6  
Old 09-22-2012
Thank you so much guys that's looking close to what I need.

The only issue is that after making some changes to another section of the command, the list will originally look like this:

Code:
alpha1,1_1
alpha1,1_2
alpha1,1_3.2
alpha1,1_3.5
alpha1,2_2
alpha1,2_7
alpha2,9_1.8
alpha2,9_3
beta7,1_1
beta7,1_3.5

So I need the output to look like:
Code:
alpha1,1_3.5
alpha1,2_7
alpha2,9_3
beta7,1_3.5

Does that make sense?

Last edited by Scrutinizer; 09-23-2012 at 12:27 AM.. Reason: code tags
tiberione
# 7  
Old 09-22-2012
This will work for your sample input:
Code:
awk -F, '{split($2,a,"_");if(a[2]>=max[$1,a[1]]){max[$1,a[1]]=a[2];rec[$1,a[1]]=$0}}
END{for(i in rec) print rec[i]|"sort"}' file

This User Gave Thanks to elixir_sinari For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to use $variable in grep?

hi i have a file which contains some messages counters. below is the snippet on the file. 17-05-29::22:36:21|message|231 17-05-29::22:36:31|message|222 17-05-29::22:36:41|message|213 17-05-30::22:36:51|message|221 17-05-30::22:37:01|message|227 17-05-30::22:37:11|message|207... (5 Replies)
Discussion started by: scriptor
5 Replies

2. Shell Programming and Scripting

Help grep one variable over other

Hi, I am trying to grep one variable over the other variable Example: i=abc j=ab grep $j $i I am getting this error: The error is due to $i being variable and not file. I know I could do it by putting the value of abc in a file and then greping it. (1 Reply)
Discussion started by: pinnacle
1 Replies

3. Shell Programming and Scripting

grep in a variable

Hello, I usually search extensively and have to date found what I've needed. However, this one's got me stumped. I need to create a variable as follow. The issue however is that upon execution, it freezes. $var1 isn't always present in usage.log and this is fine but I'd like it to continue with... (6 Replies)
Discussion started by: shadyuk
6 Replies

4. Shell Programming and Scripting

grep using variable

I have a pattern like: column "5" is missing PS: the no is in double quotes. The number usally changes, so we use a loop to grep. grep 'column "$number" is missing' filename.txt But it is not working.... How to solve this? (2 Replies)
Discussion started by: karumudi7
2 Replies

5. Shell Programming and Scripting

Grep through a variable

I want to search a text in file but that file is pointing to variable. ex: file=there was nothing special grep "there was nothing" $file but its not working . Can u let me know that how we can use variable($file) in grep command. Please use code tags (6 Replies)
Discussion started by: allthanksquery
6 Replies

6. Shell Programming and Scripting

grep using variable

how can I use grep with a variable to find a value? cat data.out Hello World grep "Hello World" data.out Hello World ## Value found I want to do something like this but can't seem to get it to work any suggestions would be appreciated. var="Hello World" grep $var data.out (3 Replies)
Discussion started by: BeefStu
3 Replies

7. Shell Programming and Scripting

grep a variable

can i grep a variable say i have a variable var=`hostname` and I want to make an if statement like if grep "esp-ueh" $var;then...... how can i do this I dont want to store this variable in a file and the grep it because my script will be used at the same time on multiple stations and then that... (9 Replies)
Discussion started by: lassimanji
9 Replies

8. Shell Programming and Scripting

grep a variable

Hi all, I am trying to do a simple thing in my mind. However I am fairly new to bash. What I need to do is create a folder for each partition on each CD, and each partition has a unique name (with spaces in it, do not ask why, it is already done :confused: ) . All CD's will show up... (2 Replies)
Discussion started by: sgstuart
2 Replies

9. Shell Programming and Scripting

grep with variable

Hi, I can't get this script to work (returns 0, should return 3): $ cat A.lst | \ while read LINE do echo "$LINE" grep -c "$LINE" B.tmp done> > > > > Socket 0 $ but in contrast this one works fine (returns 3 as expected): $ LINE=Socket $ grep -c $LINE B.tmp 3 $ (5 Replies)
Discussion started by: ozvena
5 Replies

10. Shell Programming and Scripting

How to grep a variable?

Hi, I'd like to grep a variable that I saved in the program. Like grep '0\$variable1' file1 Does someone know what's wrong with this command? Thanks a lot! (2 Replies)
Discussion started by: whatisthis
2 Replies
Login or Register to Ask a Question