Help in finding the max and min position


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help in finding the max and min position
# 1  
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 :-
Code:
#!/bin/bash 
 
echo -e Version "\t" Number of Pass "\t" Number of Fail "\t" Rank Position "\t"Min "\t" Max "\t"Gap"\t"Overall Rank %"\t\t" Qe"\t\t" Score>BugpercttbitCorr.txt
 
cat file.txt|while read LINE
do
 
version=`echo "${LINE}"| awk '{print $1}'`
 
char=`echo "${LINE}"| awk '{print $2}'`
 
cd ~/siemens/schedule2/newoutputs/$version
#get the last line number plus one because of gcc extra one line at top of the code
last=`cat bitresult.txt|tail -1|awk {'print $1+1'}`
echo $last
#catenate the ttres files to append numbers
cat -n ttbitres.txt>ttbitnres.txt
 
echo $char
echo $version
i=`grep -w  "^$char" bitresult.txt|awk '{print $2}'`
j=`grep -w  "^$char" bitresult.txt|awk '{print $3}'`

q=`echo $i $j |awk '{if($1 == 0 && $2 == 0) print "0"; else printf("%f",($2/($1+$2)))}'`

read min max gap k c < <(awk -v var="$char" -v last="$last" '
 
!found || (found && $2 == score) {
	scores[$1] = $2
}
 
$3 == var {
	score = $2
	k = $1
	found = 1
}
 
END {
 
min=k
	for (i  in scores){
 
		if (scores[i] == score)
		{		                          
		       if (i < min )
				min = i
		       if (i > max)
				max = i
 
		}
       }   
 
    gap=max-min+1;
    if(gap==1)
      c=(k/last)*min*100;    
   else 
      c=(k/last)*((k-min)/gap)*100;
 
print min,max,gap,k,c
 
 
}' ttbitnres.txt)
 
score=$(awk -v "char=$char" '$2 == char { val=$1 }END {print val?val:0 }' ttbitres.txt)

echo -e $version"\t\t\t"$i"\t\t\t"$j"\t\t"$k"\t\t"$min"\t\t"$max"\t"$gap"\t"$c"\t"$q"\t"$score>>BugpercttbitCorr.txt
 
done

What im doing is grab the "position" which is $1 in this file for specified $3(line number), So let say i am intrerested to find out line number 321 score.
Since the score of 321 is 0.5555, I wanted to handle 2 cases.

1st) If there are any other elements before or after whcih have same score,
i need to compare the position ($1) and take the min(first seen minimum position which have the score 0.5555) and take the max(last seen maximum position which have score 0.5555). This should return us position 10 for min
and 12 for max.

2nd) If (in other case) there are no other elements with similar score, i will just take the first and only position which have score of 0.5555 which in this case should return us 11.

I tried to load the above input but it seems not able to compare properly to find the min and max. It returns me 10 as min and "nothing" for max. For your info, I print out as echo -e...

Please advise. Thanks.
# 2  
Given the provided input file and your instructions, you could split your problem and try something simple, like this:

Code:
line=321

score=`awk -v "l=${line}" '$3 == l { print $2 }' input_file.txt`

awk -v "s=${score}" '
   $2 == s {
      n=$1;
      if (!min || (n<min)) min=n;
      if (!max || (n>max)) max=n;
   }
   END {
      print min, max;
   }
' input_file.txt

Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #118
Difficulty: Easy
A Unix-like OS is the one that works like Unix systems, however, Unix-like system do not necessarily conform to the Single UNIX Specification (SUS) or POSIX (Portable Operating System Interface) standards.
True or False?

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

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

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

Converting a date to friday date and finding Min/Max date

Dear all, I have 2 questions. I have a file with many rows which has date of the format YYYYMMDD. 1. I need to change the date to that weeks friday date(Ex: 20120716(monday) to 20120720). Satuday/Sunday has to be changed to next week friday date too. 2. After converting the date to... (10 Replies)
Discussion started by: 2001.arun
10 Replies

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

8. Shell Programming and Scripting

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... (4 Replies)
Discussion started by: f_o_555
4 Replies

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

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

Featured Tech Videos