AWK script - extracting min and max values from selected lines


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting AWK script - extracting min and max values from selected lines
# 8  
Old 02-03-2012
For the data you have pasted, it is working for me. May be you should paste or upload for which it is not working.

--ahamed
# 9  
Old 02-03-2012
Thanks Ahamed,
I uploaded example of the file on dropbox Smilie
http://dl.dropbox.com/u/2765863/delta.txt
# 10  
Old 02-03-2012
Code:
root@bt> awk '/TB/{f=$(NF-2);!min?min=f:0;max=f>max?f:max;min=f>min?min:f}END{print max":"min}' infile
110.300:51.130

Not correct?

--ahamed
# 11  
Old 02-03-2012
No, maybe the problem is that I'm on a mac with bash version ?

Code:
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin11)

# 12  
Old 02-03-2012
Quote:
Originally Posted by ahamed101
Try this...
Code:
awk '/TB/{f=$(NF-2);!min?min=f:0;max=f>max?f:max;min=f>min?min:f}END{print max":"min}' infile

--ahamed
Your code may return erroneous min value if the min value is equal to zero .

Example :
Code:
min=0
f=3

!min?min=f ---> this will set min to 3 and will lose the zero value

min=f>min?min:f---> this will then evaluate 3>3? to false ---> min=f=3 ... intead of keeping the zero 0
# 13  
Old 02-03-2012
Thanks for answering guys!

I figured out why I have this problem. In my file there are "." [dots] not "," [commas] between numbers and this was ruining my results.
Code:
BEGIN { max = -1; min = 1000 }
  $4 == "TB" {
    value = $5 ~ /^[[:alpha:]]$/ ? $9 : $8;  
    max = max < value ? value : max;
    min = min > value ? value : min;
  }
  END { printf "max = %.3f\n min = %.3f\n", max, min }

This changed script from @bieri is working for me - I had to change min value because when it was set to -1 the result was -1 as well [there were no smaller values in the file].

Do You have any propositions how I could obtain results without changing all the [dots] to [commas]?
# 14  
Old 02-03-2012
awk -F. ?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk Sort 2d histogram output from min(X,Y) to max(X,Y)

I've got Gnuplot-format 2D histogram data output which looks as follows. 6.5 -1.25 10.2804 6.5404 -1.25 10.4907 6.58081 -1.25 10.8087 6.62121 -1.25 10.4686 6.66162 -1.25 10.506 6.70202 -1.25 10.3084 6.74242 -1.25 9.68256 6.78283 -1.25 9.41229 6.82323 -1.25 9.43078 6.86364 -1.25 9.62408... (1 Reply)
Discussion started by: chrisjorg
1 Replies

2. 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

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

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

5. UNIX for Dummies Questions & Answers

[Solved] Print a line using a max and a min values of different columns

Hi guys, I already search on the forum but i can't solve this on my own. I have a lot of files like this: And i need to print the line with the maximum value in last column but if the value is the same (2 in this exemple for the 3 last lines) i need get the line with the minimum value in... (4 Replies)
Discussion started by: MetaBolic0
4 Replies

6. Shell Programming and Scripting

trying to print selected fields of selected lines by AWK

I am trying to print 1st, 2nd, 13th and 14th fields of a file of line numbers from 29 to 10029. I dont know how to put this in one code. Currently I am removing the selected lines by awk 'NR==29,NR==10029' File1 > File2 and then doing awk '{print $1, $2, $13, $14}' File2 > File3 Can... (3 Replies)
Discussion started by: ananyob
3 Replies

7. UNIX for Dummies Questions & Answers

Iterate a min/max awk script over time-series temperature data

I'm trying to iterate a UNIX awk script that returns min/max temperature data for each day from a monthly weather data file (01_weath.dat). The temperature data is held in $5. The temps are reported each minute so each day contains 1440 temperature enteries. The below code has gotten me as far as... (5 Replies)
Discussion started by: jgourley
5 Replies

8. UNIX for Dummies Questions & Answers

Awk search for max and min field values

hi, i have an awk script and I managed to figure out how to search the max value but Im having difficulty in searching for the min field value. BEGIN {FS=","; max=0} NF == 7 {if (max < $6) max = $6;} END { print man, min} where $6 is the column of a field separated by a comma (3 Replies)
Discussion started by: Kirichiko
3 Replies

9. UNIX for Dummies Questions & Answers

extracting selected few lines through perl

How can I extract few lines(like 10 to 15, top 10 and last 10) from a file using perl. I do it with sed, head and tail in unix scripting. I am new to perl. Appreciate your help. (2 Replies)
Discussion started by: paruthiveeran
2 Replies

10. Shell Programming and Scripting

max values amd min values

Hello every one, I have following data ***CAMPAIGN 1998 CONTRIBUTIONS*** --------------------------------------------------------------------------- NAME PHONE Jan | Feb | Mar | Total Donated ... (12 Replies)
Discussion started by: devmiral
12 Replies
Login or Register to Ask a Question