Local max values of a file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Local max values of a file
# 1  
Old 03-01-2009
Question Local max values of a file

I have a data file of two columns (corresponding to the x and y axes of a graph) separated by a comma. I want to find the local maximum values and print them to a file. It has been a while since I've done any scripting and I've forgotten everything. I have a few basic questions.

1.) How do you read a file into a script? I know how to set a variable as a file and to access the file, I just can't recall how to make the file itself a variable to be read into the script.

2.) One a file is set to a specific variable name, how do I access a specific element? (i.e. row and column)

For instance, if I have a file 'data' with composed of the following:

12 23
15 49
19 22
20 12
34 39
45 1
60 56
89 79


I want a to make a file with

15 49
34 39
89 79

but I'm just having trouble remembering how to access the specific elements. i.e. the second column first element.

Any help or direction towards a good resource would be greatly appreciated. Thank you.

-John

Last edited by jemm; 03-01-2009 at 07:30 PM..
# 2  
Old 03-02-2009
Solution

This seems to do the trick!

HTML Code:
#!/bin/sh

#This file calculate the local maximum values in the second column 
#of a file consisting of two columns and creates a file of this data.  
#
#$1 represents the first input variable:  the input file
#$2 represents the second input variable: the output file

input_file=$1
output_file=$2
i=0
j=0

 while read line
   do
   i=`expr $i + 1` 
   eig[$i]=`echo $line|awk '{print $1}'`     #eig and strain are arrays from 1 to length of file
   strain[$i]=`echo $line|awk '{print $2}'`
 done < $input_file

eig[$i+1]=0
strain[$i+1]=0

while [ $j -lt $i ]; do
   j=`expr $j + 1` 
   if [ j == 1 ]; then 
      if [ ${strain[$j]} -gt ${strain[$j+1]}  ]; then
         echo ${eig[$j]} , ${strain[$j]} >> $output_file
      fi
   else
      if [ ${strain[$j]} -gt ${strain[$j+1]} ] && [ ${strain[$j]} -gt ${strain[$j-1]} ]; then
         echo ${eig[$j]} , ${strain[$j]} >> $output_file
      fi
   fi
done
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Taking key values from one file and extracting values from another file

Hi, I have two files with values in both. File1: cat 2 3 dog 4 5 elephant 6 7 camel 2 3 File2: ----+--gkf;ajf= ---+---- +----- cat -------=----+ 3 | 4 ----- dog ------++-- 5 | 9 ----++-- elephant | 5 | 7 ---++ camel ------ ++++_---- || 8 | 9 I want the final file as: cat 4... (1 Reply)
Discussion started by: npatwardhan
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

Need to pick max values of the columns

Hi, I have sar disk reports like below sample: 01:01:00 hdisk24 0 0.0 0 0 0.0 0.0 hdisk15 0 0.0 0 3 0.0 5.5 hdisk20 0 0.0 2 1 0.0 1.9 hdisk19 1 ... (3 Replies)
Discussion started by: reddyr
3 Replies

4. Programming

Getting Rows from a MySQL Table with max values?

I feel stupid for asking this because it seems that MYSQL code isn't working the way that I think it should work. Basically I wrote code like this: select * from `Test_DC_Trailer` HAVING max(DR_RefKey); Where the DR_RefKey is a unique numeric field that is auto iterated (like a primary key)... (7 Replies)
Discussion started by: Astrocloud
7 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

AWK script - extracting min and max values from selected lines

Hi guys! I'm new to scripting and I need to write a script in awk. Here is example of file on which I'm working ATOM 4688 HG1 PRO A 322 18.080 59.680 137.020 1.00 0.00 ATOM 4689 HG2 PRO A 322 18.850 61.220 137.010 1.00 0.00 ATOM 4690 CD ... (18 Replies)
Discussion started by: grincz
18 Replies

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

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

9. Shell Programming and Scripting

awk to print mon and max values of ranges

HI all I'm trying to write an awk script to print the min and max value in a range(s) contained in another file - the range values are in $2 EG 114,7964,1,y,y,n 114,7965,1,y,y,n 114,7966,1,y,y,n 114,7967,1,y,y,n 114,7969,1,y,y,n 114,7970,1,y,y,n 114,7971,1,y,y,n 114,7972,1,y,y,n... (3 Replies)
Discussion started by: Mudshark
3 Replies
Login or Register to Ask a Question