Data stream between min and max


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Data stream between min and max
# 1  
Old 09-26-2011
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 interval they retain their values.
I have done this with Excel but it is quite dull. Is there a way that you can think of without writing a C program?
This is an example of the input
Code:
  0.36601E-02  0.44246E-02  0.30417E-02  0.41934E-02  0.43863E-02  0.35131E-02
  0.37925E-02  0.50714E-02  0.39849E-02  0.31404E-02  0.46017E-02  0.41518E-02
  0.62381E-02  0.90390E-03  0.31362E-03  0.74747E-01   0.0000       0.0000    
   0.0000       0.0000      0.44737E-01  0.37985E-03  0.46412E-02  0.25617    
  0.35068      12333.8      0.36850      0.36416      0.31733      0.32028

output (with min=0.001 max=1000)

Code:
  0.36601E-02  0.44246E-02  0.30417E-02  0.41934E-02  0.43863E-02  0.35131E-02
  0.37925E-02  0.50714E-02  0.39849E-02  0.31404E-02  0.46017E-02  0.41518E-02
  0.62381E-02  1.00000E-03  1.0000E-03  0.74747E-01   0.0000       0.0000    
   0.0000       0.0000      0.44737E-01  0.37985E-03  0.46412E-02  0.25617    
  0.35068      1.00000E+03  0.36850      0.36416      0.31733      0.32028

Thanks,
Sarah
# 2  
Old 09-26-2011
Code:
awk -v min=0.001 -v max=1000.0 '{
  $1 = $1 # the same formating for all lines 
  for (i=1; i<=NR; i++) 
    if ($i)                 
      if ($i < min) $i = min     
      else if ($i > max) $i = max
  print     
}' INPUTFILE

You can change OFS and OFMT variables to format output of values.
This User Gave Thanks to yazu For This Post:
# 3  
Old 09-26-2011
Thank you,
I tried to set OFMT

Code:
awk -v min=0.001 -v max=1000.0 '{
  OFMT="%12.5e"
  $1 = $1 # the same formating for all lines 
  for (i=1; i<=NR; i++) 
    if ($i)                 
      if ($i < min) $i = min     
      else if ($i > max) $i = max
  print     
}' INPUTFILE

but it doesn't seem to work.

Quote:
Originally Posted by yazu
Code:
awk -v min=0.001 -v max=1000.0 '{
  $1 = $1 # the same formating for all lines 
  for (i=1; i<=NR; i++) 
    if ($i)                 
      if ($i < min) $i = min     
      else if ($i > max) $i = max
  print     
}' INPUTFILE

You can change OFS and OFMT variables to format output of values.
Moderator's Comments:
Mod Comment Please use [CODE] tags

Last edited by pludi; 09-26-2011 at 09:09 AM..
# 4  
Old 09-26-2011
Oops. I made an awful typo - not NR, but NF. Well, I'm seeing about OFMT.

===

Yes, OFMT is useless (it's just for "print FLOAT"). You can do this:
Code:
awk -v min=0.001 -v max=1000.0 '
{
  for (i=1; i<=NF; i++)
    if ($i)
      if ($i < min) $i = min
      else if ($i > max) $i = max
  for (i=1; i<=NF; i++)
    printf "%12.5e", $i
  print ""
}' INPUTFILE
 3.66010e-03 4.42460e-03 3.04170e-03 4.19340e-03 4.38630e-03 3.66010e-03
 3.79250e-03 5.07140e-03 3.98490e-03 3.14040e-03 4.60170e-03 5.07140e-03
 6.23810e-03 1.00000e-03 1.00000e-03 7.47470e-02 0.00000e+00 1.00000e-03
 0.00000e+00 0.00000e+00 4.47370e-02 1.00000e-03 4.64120e-03 1.00000e-03
 3.50680e-01 1.00000e+03 3.68500e-01 3.64160e-01 3.17330e-01 3.17330e-01


Last edited by yazu; 09-26-2011 at 09:51 AM..
This User Gave Thanks to yazu For This Post:
# 5  
Old 09-27-2011
It's works thank you!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

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

2. Programming

Php number array from max, min, step size mysql data

I want to create a form with data values in a dropdown list. The values in the dropdown list need to be generated on the fly from max, min and increment values contained in a mysql database. Hopefully this makes sense, I really have no idea where to start :confused: Thanks (6 Replies)
Discussion started by: barrydocks
6 Replies

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

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

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

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

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

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

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