to find min and max value for each column!


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting to find min and max value for each column!
# 1  
Old 04-04-2012
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
Code:
a 1 4
b 2 5
c 3 6

I want ouput like:
cat file.txt
Code:
a 1 4
b 2 5
c 3 6
Max 3 6
Min 1 4
Diff 2 2

Code:
awk 'min=="" || $2 < min {min=$2} END{print min}' file.txt

this awk command can find min from 2 column, but i have to change the column number, is there a one liner which can give me desired output in the same text file.
Thanks in advance.

Last edited by joeyg; 04-04-2012 at 04:29 PM.. Reason: corrected spelling, added CodeTags
# 2  
Old 04-04-2012
You can do a loop from 2 to NF and do that minimum bit on each column, storing in an array, then print the arrays in loops too...

Code:
awk '{
        for(N=2; N<=NF; N++) { 
                if((!MIN[N])||(MIN[N]>$N)) MIN[N]=$N
                if((!MAX[N])||(MAX[N]<$N)) MAX[N]=$N }
        END {
                printf("MIN");
                for(N=2; length(MIN[N]); N++)
                        printf("\t%s", MIN[N]);
                printf("\n");
                printf("MAX");
                for(N=2; length(MIN[N]); N++)
                        printf("\t%s", MAX[N]);
                printf("\n");
                printf("DIFF");
                for(N=2; length(MIN[N]); N++)
                        printf("\t%s", MAX[N]-MIN[N]);
                printf("\n");
        }' filename

# 3  
Old 04-04-2012
Loop around the number of fields and create 2 arrays.
e.g.
Code:
awk '
{
   for (i=2;i<=NF;i++) {
      if (i in min) {
         if ($i < min[i]) {
            min[i]=$i;
         }
      } else {
         min[i]=$i;
      }
      if (i in max) {
        ...etc...
   }
}1
END {
   printf ("Min: ");
   for (i in min) {
      printf ("%d ", min[i])
   }
   printf ("\n");
  etc...
}


Last edited by CarloM; 04-04-2012 at 04:44 PM.. Reason: Fix i init...
# 4  
Old 04-04-2012
If I want to start the loop from second row (since the first row is the header) and second column what changes I should make to the above logic?
# 5  
Old 04-04-2012
Code:
NR>1 {
    for stuff

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Find min and max time taken from a log file

You have a log file as attached in sample input with various operations and time taken by each of them. Write a script to find the min and max time taken for each operation. Sample output is attached. Sample Input is given as below: operation1,83621 operation2,72321 operation3,13288... (1 Reply)
Discussion started by: Chandan_Bose
1 Replies

2. Shell Programming and Scripting

Get min and max value in column

Gents, I have a big file file like this. 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... (3 Replies)
Discussion started by: jiam912
3 Replies

3. Shell Programming and Scripting

awk script to find min and max value

I need to find the max/min of columns 1 and 2 of a 2 column file what contains the special character ">". I know that this will find the max value of column 1. awk 'BEGIN {max = 0} {if ($1>max) max=$1} END {print max}' input.file But what if I needed to ignore special characters in the... (3 Replies)
Discussion started by: ncwxpanther
3 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. Shell Programming and Scripting

How to find the average,min,max ,total count?

Hi , Below is my sample data,I have this 8 column(A,B,C,D,E,F,G,H) in csv file. A , B ,C ,D ,E ,F,G ,H 4141,127337,24,15,20,69,72.0,-3 4141,128864,24,15,20,65,66.0,-1 4141,910053,24,15,4,4,5.0,-1 4141,910383,24,15,22,3,4.0,-1 4141,496969,24,15,14,6,-24.0,-18... (7 Replies)
Discussion started by: vinothsekark
7 Replies

6. Shell Programming and Scripting

Find min.max value if matching columns found using AWK

Input_ File : 2 3 4 5 1 1 0 1 2 1 -1 1 2 1 3 1 3 1 4 1 6 5 6 6 6 6 6 7 6 7 6 8 5 8 6 7 Desired output : 2 3 4 5 -1 1 4 1 6 5 6 8 5 8 6 7 (3 Replies)
Discussion started by: vasanth.vadalur
3 Replies

7. Shell Programming and Scripting

Help: Find line where column has max vlaue

Hi all, Ive searched the forum but with no luck... I have a file: ID Name Val 1 bob 45 2 joe 89 3 sue 11 4 steve 89 ... etc I want to find a way to print... (6 Replies)
Discussion started by: muay_tb
6 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

how to find min, max dates in a file

hello friends...:-) i need some help i have a file cantain like this Star1 ,NetWork,09/02/2008 Star1 ,NetWork,10/02/2008 Star1 ,NetWork,11/02/2008 Star2 ,NetWork,08/03/2008 Star2 ,NetWork,09/04/2008 Star2 ,NetWork,10/05/2008 i need to find out min, max dates the output look like... (6 Replies)
Discussion started by: gemini106
6 Replies

10. UNIX for Dummies Questions & Answers

How to find whenther given value is in betwwen min and Max in unix shell scripting

Hi I wanted to write a shell script with an if condition Example MinValue=10 MaxValue=30 logvalue = some integer value that script reads from the command line arguement I wanted to check whether log value greater than or equal to10 and less than equal to 30 and proceed with the rest of... (5 Replies)
Discussion started by: pinky
5 Replies
Login or Register to Ask a Question