Get min and max value in column


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Get min and max value in column
# 1  
Old 02-09-2015
Get min and max value in column

Gents,

I have a big file file like this.

Code:
5100010002
5100010004
5100010006
5100010008
5100010010
5100010012
5102010002
5102010004
5102010006
5102010008
5102010010
5102010012

The file is sorted and I would like to find the min and max value, taking in the consideration key1 (substr$0,1,5) and key2 substr($0,6,5)

I would like to get something like this

Code:
51000 10002 10012
51020 10002 10012

Thanks for your help


Moderator's Comments:
Mod Comment
Please wrap all code, files, input & output/errors in CODE tags
It makes them easier to read and preserves multiple spaces in case they are important.

Last edited by rbatte1; 02-09-2015 at 09:04 AM.. Reason: Added CODE & ICODE tags
# 2  
Old 02-09-2015
Hello jiam912,

Could you please try following and let me know if this helps.
Code:
wk '{A[substr($0,1,5)+0]=A[substr($0,1,5)+0]>=substr($0,6)+0?A[substr($0,1,5)+0]:substr($0,6)+0;B[substr($0,1,5)+0]=B[substr($0,1,5)+0]<=substr($0,6)+0 && B[substr($0,1,5)+0]?B[substr($0,1,5)+0]:substr($0,6)} END{print "MAX values:";for(i in A){print i OFS A[i]};print "MIN values:";for(j in B){print j OFS B[j]}}' Input_file

Output is as follows.
Code:
MAX values:
51000 10012
51020 10012
MIN values:
51000 10002
51020 10002

EDIT: You can try following also to get output in requested form.
Code:
awk '{A[substr($0,1,5)+0]=A[substr($0,1,5)+0]>=substr($0,6)+0?A[substr($0,1,5)+0]:substr($0,6)+0;B[substr($0,1,5)+0]=B[substr($0,1,5)+0]<=substr($0,6)+0 && B[substr($0,1,5)+0]?B[substr($0,1,5)+0]:substr($0,6)} END{print "VALUE MAX MIN";for(i in A){print i OFS A[i] OFS B[i]}}' OFS="\t"  Input_file

EDIT: Adding a nonone liner form of solution.
Code:
awk '{
          A[substr($0,1,5)+0]=A[substr($0,1,5)+0]>=substr($0,6)+0?A[substr($0,1,5)+0]:substr($0,6)+0;
          B[substr($0,1,5)+0]=B[substr($0,1,5)+0]<=substr($0,6)+0 && B[substr($0,1,5)+0]?B[substr($0,1,5)+0]:substr($0,6)
       }
END {
          print "VALUE MAX MIN";
          for(i in A)
       {
          print i OFS A[i] OFS B[i]
       }
       }
    ' OFS="\t"  Input_file

Output will be as follows.
Code:
VALUE MAX MIN
51000 10012 10002
51020 10012 10002


Thanks,
R. Singh

Last edited by RavinderSingh13; 02-09-2015 at 09:26 AM.. Reason: Added one more solution now + added one liner form of solution now
This User Gave Thanks to RavinderSingh13 For This Post:
# 3  
Old 02-09-2015
Any attempts from your side?

---------- Post updated at 14:18 ---------- Previous update was at 14:15 ----------

However, try
Code:
awk     '               {D1=substr($0, 1, 5)
                         D2=substr($0, 6, 5)+0
                        }
         !(D1 in MIN)   {MIN[D1]=D2
                         MAX[D1]=D2
                         next
                        }
          D2 < MIN[D1]  {MIN[D1]=D2}
          D2 > MAX[D1]  {MAX[D1]=D2}
          END           {for (m in MIN) print m, MIN[m], MAX[m]}
        ' file
51000 10002 10012
51020 10002 10012

This User Gave Thanks to RudiC For This Post:
# 4  
Old 02-09-2015
Dear All.

Both codes works fine.. Thanks for your help
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to get min and max values using awk?

Hi, I need your kind help to get min and max values from file based on value in $5 . File1 SP12.3 stc 2240806 2240808 + ID1_N003 ID2_N003T0 SP12.3 sto 2241682 2241684 + ID1_N003 ID2_N003T0 SP12.3 XE 2239943 2240011 + ID1_N003 ID2_N003T0 SP12.3 XE 2240077 2241254 + ID1_N003 ... (12 Replies)
Discussion started by: redse171
12 Replies

2. Shell Programming and Scripting

Get the min avg and max with awk

aaa: 3 ms aaa: 2 ms aaa: 5 ms aaa: 10 ms .......... to get the 3 2 5 10 ...'s min avg and max something like min: 2 ms avg: 5 ms max: 10 ms (2 Replies)
Discussion started by: yanglei_fage
2 Replies

3. UNIX for Dummies Questions & Answers

Integrate MIN and MAX in a string

I need to use awk for this task ! input (fields are separated by ";"): 1%2%3%4%;AA 5%6%7%8%9;AA 1%2%3%4%5%6;BB 7%8%9%10%11%12;BBIn the 1st field there are patterns composed of numbers separated by "%". The 2nd field define groups (here two different groups called "AA" and "BB"). Records... (8 Replies)
Discussion started by: beca123456
8 Replies

4. Shell Programming and Scripting

Print min and max value from two column

Dear All, I have data like this, input: 1254 10125 1254 10126 1254 10127 1254 10128 1254 10129 1255 10130 1255 10131 1255 10132 1255 10133 1256 10134 1256 10135 1256 10137... (3 Replies)
Discussion started by: aksin
3 Replies

5. Homework & Coursework Questions

Perl max and min issues

I have to find the min and max on a specific column in a file after sending that column and one other to a output file but I keep getting a maximum of zero below is what i have so far if anyone can give me advice on what i am doing wrong the help would be much appreciated # ! /usr/bin/perl -w... (2 Replies)
Discussion started by: dstewie
2 Replies

6. Shell Programming and Scripting

to find min and max value for each column!

Hello Experts, I have got a txt files which has multiple columns, I want to get the max, min and diff (max-min) for each column in the same txt file. Example: cat file.txt a 1 4 b 2 5 c 3 6 I want ouput like: cat file.txt a 1 4 b 2 5 c 3 6 Max 3 6 Min 1 4 Diff 2 2 awk 'min=="" ||... (4 Replies)
Discussion started by: dixits
4 Replies

7. Shell Programming and Scripting

Data stream between min and max

Hi, I have a text file containing numbers. There are up to 6 numbers per row and I need to read them, check if they are 0 and if they are not zero check if they are within a given interval (min,max). If they exceed the max or min they should be set to max or min respectively, if they are in the... (4 Replies)
Discussion started by: f_o_555
4 Replies

8. Shell Programming and Scripting

get min, max and average value

hi! i have a file like the attachement. I'd like to get for each line the min, max and average values. (there is 255 values for each line) how can i get that ? i try this, is it right? BEGIN {FS = ","; OFS = ";";max=0;min=0;moy=0;total=0;freq=890} $0 !~ /Trace1:/ { ... (1 Reply)
Discussion started by: riderman
1 Replies

9. Shell Programming and Scripting

Help in finding the max and min position

Hi, I have this input file called ttbitnres (which is catenated and sorted):- 8 0.4444 213 10 0.5555 342 11 0.5555 321 12 0.5555 231 13 0.4444 400 My code is at :- #!/bin/bash echo -e Version "\t" Number of Pass "\t" Number of Fail "\t" Rank Position "\t"Min "\t" Max... (1 Reply)
Discussion started by: ahjiefreak
1 Replies

10. Shell Programming and Scripting

min and max value of process id

We are running a AIX 5.2 OS. Would anyone happen to know what the max value for a process id could be? Thanks jerardfjay :) (0 Replies)
Discussion started by: jerardfjay
0 Replies
Login or Register to Ask a Question