minimum and maximum from columns


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting minimum and maximum from columns
# 1  
Old 09-11-2012
minimum and maximum from columns

Hi Friends,

my input file is this way

Code:
chr1 100 120 abc
chr1 100 121 def
chr1 100 122 ghi
chr2 240 263 kil
chr2 240 276 ghj
chr2 255 290 hjh

my output

Code:
chr1 100 122 abc
chr2 240 276 kil
chr2 255 290 hjh

Basically, I want to match on first and second column and then print the unique first and second columns followed by the maximum of third column and first record from the fourth column.

Thanks
# 2  
Old 09-11-2012
Will all of the entries in the file with matching 1st and 2nd columns be on contiguous lines in the file?
This User Gave Thanks to Don Cragun For This Post:
# 3  
Old 09-11-2012
Quote:
Originally Posted by Don Cragun
Will all of the entries in the file with matching 1st and 2nd columns be on contiguous lines in the file?
Yes, they are all sorted and are contiguous.
# 4  
Old 09-11-2012
Code:
awk '{if(a[$1FS$2]<$3)a[$1FS$2]=$3;if(!key[$1FS$2])key[$1FS$2]=$NF}END{for(i in a)print i,a[i],key[i]}' infile

This User Gave Thanks to complex.invoke For This Post:
# 5  
Old 09-11-2012
The following shell script should do what you want:
Code:
#!/bin/ksh
last1=
printlast() {
        if [ "x$last1" != x ]
        then
                printf "%s %s %s %s\n" "$last1" "$last2" "$last3" "$last4"
                last1=
        fi
}
while read in1 in2 in3 in4
do
        if [[ "x$in1" != "x$last1" || "x$in2" != "x$last2" ]]
        then    printlast
                last1="$in1"
                last2="$in2"
                last3="$in3"
                last4="$in4"
        else    if [ "$in3" -gt "$last3" ]
                then    last3="$in3"
                fi
        fi
done < in
printlast

There are lots of other ways to do this as well.

---------- Post updated at 05:33 PM ---------- Previous update was at 05:22 PM ----------

Quote:
Originally Posted by complex.invoke
Code:
awk '{if(a[$1FS$2]<$3)a[$1FS$2]=$3;if(!key[$1FS$2])key[$1FS$2]=$NF}END{for(i in a)print i,a[i],key[i]}' infile

This is one of the other ways to do it I mentioned in my last message. Note, however, that the order of the output lines is not guaranteed to be the same as in the input file when using awk this way. If maintaining the order is important, you would have to sort the output from this awk script or make the awk script more complex.
This User Gave Thanks to Don Cragun 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

Create a list from minimum and maximum

Using the input file for each row , using columns 1 (min) and 2 (max) , and with increment of 4 each time I want to create the output file. Input file 1000 1012 2000 2001 2000 2008 3000 3001 Output desired 1000 2000 2001 1004 2000 2001 1008 2000 2001 1012 2000 2001 2000 3000 3001... (5 Replies)
Discussion started by: jiam912
5 Replies

2. Shell Programming and Scripting

awk to find maximum and minimum from column and store in other column

Need your support for below. Please help to get required output If column 5 is INV then only consider column1 and take out duplicates/identical rows/values from column1 and then put minimum value of column6 in column7 and put maximum value in column 8 and then need to do subtract values of... (7 Replies)
Discussion started by: as7951
7 Replies

3. Shell Programming and Scripting

Find minimum and maximum values based on column with associative array

Hello, I need to find out the minimum and maximum values based on specific column, and then print out the entire row with the max value. Infile.txt: scf6 290173 290416 . + X_047241 T_00113118-1 scf6 290491 290957 . + X_047241 T_00113118-2 scf6 290898 290957 . + X_047241 T_00113119-3 scf6... (2 Replies)
Discussion started by: yifangt
2 Replies

4. Shell Programming and Scripting

Output minimum and maximum values for replicates ID

Hi All I hope that someone could help me! I have an input file like this, with 4 colum(ID, feature1, start, end): a x 1 5 b x 3 10 b x 4 9 b x 5 16 c x 5 9 c x 4 8 And my output file should be like this: a x 1 5 b x 3 16 c x 4 9 What I would like to do is to output for each ID... (2 Replies)
Discussion started by: giuliangiuseppe
2 Replies

5. UNIX and Linux Applications

Maximum and minimum threshold in autosys

Good evening In a production system there are houndred of Jobs running and i´ve got to monitor all of them, but the problem arises when a job running takes much longer or conversely takes nothing and as operator is almost imposible to detect the máximum or mínimum threshold for a running job. Ive... (1 Reply)
Discussion started by: alexcol
1 Replies

6. Shell Programming and Scripting

Extract minimum/maximum using awk

From the below table I want to print highest value and lowest value using awk script. aaa 55 66 96 77 ggg 22 96 77 23 ddd 74 58 18 3 kkk 45 89 47 92 zzz 34 58 89 92 Thanks, Green edit by bakunin: it sure is not news to you that you should use CODE-tags, no? And that we do not want such... (3 Replies)
Discussion started by: gwgreen1
3 Replies

7. Shell Programming and Scripting

Getting average ,maximum and minimum value

Hi Evreyone below is the sample data i have in one file Wed Jan 30 7 :04:50 2013 type1 419990050 101 ms Wed Jan 30 7 :04:58 2013 type1 488226363 101 ms Wed Jan 30 7 :05:03 2013 type1 431525334 101 ms Wed Jan 30 7 :05:48 2013 type2 400676615 101 ms Wed Jan 30 8 :09:46... (3 Replies)
Discussion started by: zozoo
3 Replies

8. Shell Programming and Scripting

Finding minimum maximum and average

I am trying to find the minimum maximum and average from one file which has values Received message from https://www.demandmatrix.net/app/dm/xml] in milliseconds. Received message from https://www.demandmatrix.net/app/dm/xml] in milliseconds. Received message from... (5 Replies)
Discussion started by: aroragaurav.84
5 Replies

9. Shell Programming and Scripting

Print minimum and maximum values using awk

Can I print the minimum and maximum values of values in first 4 columns ? input 3038669 3038743 3037800 3038400 m101c 3218627 3218709 3217600 3219800 m290 ............. output 3037800 3038743 m101c 3217600 3219800 m290 (2 Replies)
Discussion started by: quincyjones
2 Replies

10. UNIX for Dummies Questions & Answers

Extract minimum values among 3 columns

Hi. I would like to ask for helps on extracting a minimum values among three columns using gawk in tab separator. input file: as1 10 20 30 as2 22 21 23 as3 300 391 567 as4 19 20 15 Output file: as1 10 as2 21 as3 300 as4 15 I am extremely appreciate your helps and comments.... (2 Replies)
Discussion started by: Amanda Low
2 Replies
Login or Register to Ask a Question