Print line based on highest value of col (B) and repetion of values in col (A)


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Print line based on highest value of col (B) and repetion of values in col (A)
# 1  
Old 07-23-2011
Question Print line based on highest value of col (B) and repetion of values in col (A)

Hello everyone,

I am writing a script to process data from the ATP world tour.

I have a file which contains:
Code:
t=540 y=2011 r=1 p=N409
t=540 y=2011 r=2 p=N409
t=540 y=2011 r=3 p=N409
t=540 y=2011 r=4 p=N409
t=520 y=2011 r=1 p=N409
t=520 y=2011 r=2 p=N409
t=520 y=2011 r=3 p=N409

The contents of the file will get updated regularly with different `t' values (first column) and `r' values (third column). After each update of the file, I want to be always able to print the line which contains: The highest value of `r' (third column) for the first-repeating value of `t' (first column).

So, in the above version of the file I want to print the 4th line:
Code:
t=540 y=2011 r=4 p=N409

But, for example if the file gets updated to:
Code:
t=560 y=2011 r=1 p=N409
t=560 y=2011 r=2 p=N409
t=560 y=2011 r=3 p=N409
t=560 y=2011 r=4 p=N409
t=560 y=2011 r=5 p=N409
t=560 y=2011 r=6 p=N409
t=540 y=2011 r=1 p=N409

Then, I will need to print the 6th line:
Code:
t=560 y=2011 r=6 p=N409

How can I find the line based on these criteria? Your help is greatly appreciated Smilie

Last edited by radoulov; 07-24-2011 at 04:29 AM.. Reason: Forgot to add my question :D; Code tags added.
# 2  
Old 07-23-2011
Assuming that the input file is sorted, this should work:

Code:
awk '

    {
        if( last && last != $1 )     # we have a different first token
        {
            print saved;             # show the record with largest 3rd token
            exit( 0 );
        }

        last = $1;
        split( $3, a, "=" );
        if( a[2] > max )          # token 3 is greater than max seen
        {
            saved = $0;           # save this record
            max = a[2];
        }
    }
' input-file

This User Gave Thanks to agama For This Post:
# 3  
Old 07-23-2011
agama, I can not find words to thank you .. It worked like a charm Smilie
# 4  
Old 07-23-2011
Thank you so much, agama Smilie
# 5  
Old 07-25-2011
yet another awk way...
Code:
awk -F'[=| ]' '{if(t[$2]<$6 && l[$2]=$0) t[$2]=$6}END{for(i in l) print l[i]}' file

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Emergency UNIX and Linux Support

Read values in each col starting 3rd row.Print occurrence value.

Hello Friends, Hope all are doing fine. Here is a tricky issue. my input file is like this 07 10 14 20 21 03 15 27 30 32 01 10 11 19 30 02 06 14 15 17 01 06 20 25 29 Logic: 1. Please print another column as "0-0-0-0-0" for the first and second rows. 2. Read the first column... (4 Replies)
Discussion started by: jacobs.smith
4 Replies

2. Shell Programming and Scripting

How to mark the row based on col value.?

Hi Gurus, I have requirement to identify the records based on one column value. the sample file as below: ID AMT, AMT1 100,10, 2 100,20, 3 200,30, 0 200, 40, 0 300, 20, 2 300, 50, 2 400, 20, 1 400, 60, 0 for each ID, there 2 records, if any one record amt1 is 0, the in 4th col add... (5 Replies)
Discussion started by: ken6503
5 Replies

3. Shell Programming and Scripting

Print lines in which value in specified Col is NOT unique

Hi everyone, I have the following file, which is a 3 column tab-delineated. cat big 24 cat small 13 cat red 63 dog big 34 chicken plays 39 fish red 294 I would like to print only those lines, in which the value in Col2 is repeated. Thus, given the above input file, the desired... (7 Replies)
Discussion started by: owwow14
7 Replies

4. Shell Programming and Scripting

Print lines that contain a value in a specific column shared by more than 1 entity in another col

I want to expand on a question that I just asked here: I want to extract only those values in Column 2 that are shared by at least 2 unique values in Column 2. Using the same input (in this case 3- tab-separated columns): waterline-n below-sheath-v 14.8097 dock-n below-sheath-v ... (2 Replies)
Discussion started by: owwow14
2 Replies

5. Shell Programming and Scripting

Modifying col values based on another col

Hi, Please help with this. I have several excel files (with and .xlsx format) with 10-15 columns each. They all have the same type of data but the columns are not ordered in the same way. Here is a 3 column example. What I want to do add the alphabet from column 2 to column 3, provided... (9 Replies)
Discussion started by: newbie83
9 Replies

6. Shell Programming and Scripting

Run a program-print parameters to output file-replace op file contents with max 4th col

Hi Friends, This is the only solution to my task. So, any help is highly appreciated. I have a file cat input1.bed chr1 100 200 abc chr1 120 300 def chr1 145 226 ghi chr2 567 600 unix Now, I have another file by name input2.bed (This file is a binary file not readable by the... (7 Replies)
Discussion started by: jacobs.smith
7 Replies

7. Shell Programming and Scripting

Printing from col x to end of line, except last col

Hello, I have some tab delimited data and I need to move the last col. I could hard code it, awk '{ print $1,$NF,$2,$3,$4,etc }' infile > outfile but it would be nice to know the syntax to print a range cols. I know in cut you can do, cut -f 1,4-8,11- to print fields 1,... (8 Replies)
Discussion started by: LMHmedchem
8 Replies

8. Shell Programming and Scripting

Retrieving data from 65th col (of each line) ?

Hello Friends, I am in situation where I have to note down few SQL queries from specific hexdump format. Here is an example (the query text starts at 65th character on each line) ---------------------- 0x000007FEB0E701C0 : 7365 6C65 6374 2063 7573 746E 6F2C 2020 select custno, ... (9 Replies)
Discussion started by: Sunusernewbie
9 Replies

9. Ubuntu

Match col 1 of File 1 with col 1 File 2 and create a 3rd file

Hello, I have a 1.6 GB file that I would like to modify by matching some ids in col1 with the ids in col 1 of file2.txt and save the results into a 3rd file. For example: File 1 has 1411 rows, I ignore how many columns it has (thousands) File 2 has 311 rows, 1 column Would like to... (7 Replies)
Discussion started by: sogi
7 Replies

10. Shell Programming and Scripting

Awk to print distinct col values

Hi Guys... I am newbie to awk and would like a solution to probably one of the simple practical questions. I have a test file that goes as: 1,2,3,4,5,6 7,2,3,8,7,6 9,3,5,6,7,3 8,3,1,1,1,1 4,4,2,2,2,2 I would like to know how AWK can get me the distinct values say for eg: on col2... (22 Replies)
Discussion started by: anduzzi
22 Replies
Login or Register to Ask a Question