Find highest records in table


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Find highest records in table
# 8  
Old 07-02-2013
Quote:
Originally Posted by GDC
Dear Don Cragun,

thanks for point out the missing value for one of the sensor. Finding the best values for each sensor is part of a larger script and at the end a few sensors have to be removed.

The list is concatenated and therefore the sensors are not sorted. I could, however, add a extra step to sort the file first.

Thanks for your suggestions!
I wasn't sure if sensor M01072-5 was missing or if sensor M01072-4 was there by mistake. You originally said that there would be three to six measurements per sensor and both of these sensors only had two measurements in your sample data.

Sorting your input file takes time and might rearrange the order of lines that have the same sort key, so if picking the 1st measurement from measurements with the same calculated "best" measurement matters, Yoda's suggestion is probably much better than sorting and then using a simpler awk script.

The script rdrtx1 just provided also looks good as long as none of your sensor reading calculations ($6 * $7) produce negative values.
# 9  
Old 07-02-2013
I'm not sure I understand rdrtx1's script (please explain; thanks!), but it will not print the best measurement (i.e. the one with max $6*$7), but the first line for each sensor.
# 10  
Old 07-03-2013
Quote:
Originally Posted by RudiC
I'm not sure I understand rdrtx1's script (please explain; thanks!), but it will not print the best measurement (i.e. the one with max $6*$7), but the first line for each sensor.
RudiC is correct; rdrtx1's script uses the array a[$1] to store both the computed value of the best measurement and the contents of the line containing the best measurement. It can't do both.

Yoda's script uses a tab as the field separator (where the requested separator seems to be four spaces) and not only prints the line with the best measurement for each sensor, but also the computed measurement (which was not requested). Rearranging Yoda's script, changing OFS, leaving off the computed measurement, and dropping one unneeded assignment ($1 = $1); I came up with this script:
Code:
awk '
{       V = $6 * $7
        if(!($1 in A) || A[$1] < V) {
                A[$1] = V
                R[$1] = $0
        }
}
END {   for(k in R)
                print R[k]
}
' OFS='    ' infile.txt

which produces the following output:
Code:
M01072-1    FJ973371    238617596    400    1979    97.91    383    8    0    1    383    1105    723
M01072-2    EF205010    147743297    443    1269    99.55    443    2    0    1    443    869    427
M01072-4    HM483399    299790116    443    3656    92.63    448    23    9    1    443    3314    2872
M01072-5    AF183464    6120004    403    2120    93.20    397    22    5    8    403    539    931
M01072-6    AF395513    15281673    403    2104    93.25    400    12    13    1    392    510    902
M01072-7    EF205010    147743297    358    1269    99.43    351    2    0    8    358    791    441
M01011-2    HQ670228    339699497    443    1313    93.72    446    22    6    1    443    871    429

which matches the requested output except that the output order is different and the output for sensor M01072-5 (shown in red above) was missed in the original request. If the output order difference is important, you'll need to specify what order is needed. We can then either sort the results externally or modify the awk script (to preserve the input order) depending on what output order is required.

As always, if you're going to use this on a Solaris system; use /usr/xpg4/bin/awk, /usr/xpg6/bin/awk, or nawk instead of /usr/bin/awk or /bin/awk.

Hope this helps.
This User Gave Thanks to Don Cragun For This Post:
# 11  
Old 07-03-2013
Dear All,

I tested the awk script provided by rdrtxt and it worked ... although I see now the double assignment problem.

---------- Post updated at 04:47 PM ---------- Previous update was at 04:24 PM ----------

Dear Don Cragun,

thanks for pointing out the problem with rdrtx1's awk script. I used a sorted table and did not realize the problem. I will use the modified script originally suggested by Yoda. Thanks!

Last edited by GDC; 07-03-2013 at 11:34 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Solaris

Find highest value of a particular property in multiple files

I have multiple files with pattern of "*.tps (example:tps-20170307170421560-1053.tps)" in my log directory(files are in different sub directories). entries in files are given below. I want to extract highest value of endtime accross all files. "endTime :1488902691462" ... (7 Replies)
Discussion started by: Agoyals1986
7 Replies

2. Shell Programming and Scripting

Delete the records from table

Hi, Can any one help me... the records are not deleting when I run the below script. But if I issue the same delete command manually, the records are getting deleted. script: #!/bin/ksh USAGE_STRING="USAGE $0 " if then echo "SORRY you need to be user 'mqm'. Only 'mqm' has... (5 Replies)
Discussion started by: zxcjggu708
5 Replies

3. Shell Programming and Scripting

Find highest number - working but need help!

Hello all, I am new to this and need some help or maybe steer me to the right direction! I wrote a script to get the highest number and prints it on the screen, the script basically asks the user to input numbers, and then prints the highest number! very simple it works like this $sh max.sh... (8 Replies)
Discussion started by: unknownsolo
8 Replies

4. Shell Programming and Scripting

Getting number of records from a table

I am doing a loading process. I am loading data from a Oracle source to Oracle target. For example there is an SQL statement: Insert into emp_1 Select * from emp_2 where deptno=20; In this case my source is emp_2 and loading into my target table emp_1. This process is automated. Now I... (3 Replies)
Discussion started by: karthikkasarla
3 Replies

5. Programming

Help with find highest and smallest number in a file with c

Input file: #data_1 AGDG #data_2 ADG #data_3 ASDDG DG #data_4 A Desired result: Highest 7 Slowest 1 code that I try but failed to archive my goal :( #include <stdio.h> (2 Replies)
Discussion started by: cpp_beginner
2 Replies

6. Shell Programming and Scripting

Total records in table

Hi, I am having two tables. A & B I want to know the total number of records in each table and need to store each value in some variables to process further in the code. How it can be done ? With Regards (2 Replies)
Discussion started by: milink
2 Replies

7. Shell Programming and Scripting

Verifying table records

Hi, Script copies records of two tables into another tables for backup before using oracle's import utility to restore from backup. Now, suppose if the import utility fails then the script will again copy those records from the backup table to the original ones. How to check whether all... (2 Replies)
Discussion started by: milink
2 Replies

8. Shell Programming and Scripting

How do I load records from table to a flat file!

Hi All, I need to load records from oracle table XYZ to a flat file say ABC.dat. could any one tell me how do i do this in UNXI, Regards Ann (1 Reply)
Discussion started by: Haque123
1 Replies

9. Shell Programming and Scripting

Inserting records from flat file to db table

I have 20000 numbers present in a file in each line like 25663, 65465, 74579, 56446, .. .. I have created a table in db with single number column in it. create table testhari (no number(9)); I want to insert all these numbers into that table. how can i do it? can anybody please... (4 Replies)
Discussion started by: Hara
4 Replies

10. Shell Programming and Scripting

find the highest number in the file

Hi, I have a file a.txt and it has values in it Eg :- I need to read through the file and find the number that is the greatest in them all. Can any one assit me on this. Thanks (30 Replies)
Discussion started by: systemali
30 Replies
Login or Register to Ask a Question