Count math using awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Count math using awk
# 1  
Old 12-10-2014
Count math using awk

Hi expert,

I have log :

Code:
TOTAL-TIME                :      2125264636
DATA-BYTES-DOWN           :   3766111307032
DATA-BYTES-UP             :    455032157567

DL = (3766111307032/2125264636)/1024 = 1.73
UL = (455032157567/2125264636)/1024 = 0.21

I want the result :

Code:
TOTAL = 1.94

Anybody can help
# 2  
Old 12-10-2014
Hello justbow,

Following may help you in same.

Code:
awk -F":" '/TOTAL-TIME/ {A=$2} !/TOTAL-TIME/ {COUNT+=(($2 / A) / 1024);} END{print "TOTAL= "COUNT}'  Input_file

Output will be as follows, this will work for given input data.
Code:
TOTAL= 1.93962

EDIT: Adding global solution if more than the given lines are there in input file.

Code:
awk -F":" '/TOTAL-TIME/ {A=$2} /DATA-BYTES-DOWN/ {X=(($2 / A) / 1024)} /DATA-BYTES-UP/ {Y=(($2 / A) / 1024); printf "%s %2.2f\n", "TOTAL =",  X+Y}'  Input_file

Following is a non oneliner form of solution.
Code:
awk -F":" '
                /TOTAL-TIME/ {A=$2}
                /DATA-BYTES-DOWN/ {X=(($2 / A) / 1024)}
                /DATA-BYTES-UP/ {Y=(($2 / A) / 1024);
                printf "%s %.2f\n", "TOTAL =",  X+Y}
          ' Input_file


Thanks,
R. Singh

Last edited by RavinderSingh13; 12-10-2014 at 11:20 AM.. Reason: Added global solution for input
# 3  
Old 12-10-2014
Also try
Code:
awk -F':' '$1 ~ /TIME/ { t=$2 } $1 ~ /DOWN/ { d=$2 } $1 ~ /UP/ { u=$2 }
            END { a=d/t/1024; b=u/t/1024; printf "%s %2.2f\n", "TOTAL =", a+b }' log

# 4  
Old 12-10-2014
Quote:
Originally Posted by junior-helper
Also try
Code:
awk -F':' '$1 ~ /TIME/ { t=$2 } $1 ~ /DOWN/ { d=$2 } $1 ~ /UP/ { u=$2 }
            END { a=d/t/1024; b=u/t/1024; printf "%s %2.2f\n", "TOTAL =", a+b }' log

Hello junior-helper,

If input file has more than one set of entries provided by user then above command will give only the last line value. Let's say following is the input file.

Code:
TOTAL-TIME                :      2125264636
DATA-BYTES-DOWN           :   3766111307032
DATA-BYTES-UP             :    455032157567
TOTAL-TIME                :      2128964636
DATA-BYTES-DOWN           :   376616327207032
DATA-BYTES-UP             :    455032123672567
TOTAL-TIME                :      21252647866
DATA-BYTES-DOWN           :   3766111307278387232
DATA-BYTES-UP             :    455032152376267
TOTAL-TIME                :      21252127236
DATA-BYTES-DOWN           :   376611113131032
DATA-BYTES-UP             :    4550321131313167

Then it will give output as follows.
Code:
awk -F':' '$1 ~ /TIME/ { t=$2 } $1 ~ /DOWN/ { d=$2 } $1 ~ /UP/ { u=$2 }
 END { a=d/t/1024; b=u/t/1024; printf "%s %2.2f\n", "TOTAL =", a+b }' Input_file
TOTAL = 226.40

So we can use following for it.
Code:
awk -F':' '$1 ~ /TIME/ { t=$2 } $1 ~ /DOWN/ { d=$2 } $1 ~ /UP/ { u=$2; a=d/t/1024; b=u/t/1024; printf "%s %2.2f\n", "TOTAL =", a+b;next }'  Input_file

Output will be as follows now.
Code:
TOTAL = 1.94
TOTAL = 381.48
TOTAL = 173074.31
TOTAL = 226.40

Thanks,
R. Singh

Last edited by RavinderSingh13; 12-10-2014 at 10:29 AM.. Reason: Added output at last
# 5  
Old 12-10-2014
Hi RavinderSingh13,
basically, you are right. I tailored my command for the provided input though Smilie

By the way, (I know I falsely introduced it though) the first "2" in %2.2f is superfluous padding, because due to .2 it will never take effect, so %.2f should be used instead.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

[awk] Math & Bold-Font?

Heya There is a script which has presets stored in a tab-seperated file. That script also has $help_text, which will be shown when called with invalid arguments or -h. So i do need to have that file ready, so the help text can get the values out of the file, and print it with the $help_text.... (17 Replies)
Discussion started by: sea
17 Replies

2. Shell Programming and Scripting

Math count %memory using awk

Hi expert, i have log this: Memory: 74410384 Memory: 75831176 Memory: 77961232 Memory: 77074656 Memory: 76086160 Memory: 77128592 Memory: 78045384 Memory: 76696040 Memory: 72401176 Memory: 72520016 Memory: 72137016 Memory: 73175832 Memory: 73034528 Memory: 71770736 Memory:... (4 Replies)
Discussion started by: justbow
4 Replies

3. Shell Programming and Scripting

awk --> math-operation in a array

Hi main object is categorize the difference of data-values (TLUFT02B - TLUFT12B). herefor i read out data-files which are named acording to the timeformat yyyymmddhhmm. WR030B 266.48 Grad 0 WR050B 271.46 Grad 0 WR120B 268.11 Grad 0 WV030B 2.51 m/s ... (6 Replies)
Discussion started by: IMPe
6 Replies

4. Shell Programming and Scripting

awk evaluating a string as a math expression

Hi, I am writing a script in awk trying to replace strings that are math expressions with their result. For example, I have a file that looks like this: 5-1 32/8-1 4*12 17+1-3 I would like to get the following output: 4 3 48 15 I tried doing it the following way (using the "bc"... (8 Replies)
Discussion started by: avi.levi
8 Replies

5. Shell Programming and Scripting

awk in horizontal and vertical math

Based on input ail,UTT,id1_0,COMBO,21,24,21,19,85 al,UTHAST,id1_0,COMBO,342,390,361,361,1454 and awk code as awk -F, '{ K=0; for(i=NF; i>=(NF-4); i--) { K=K+$i; J=J+$i;} { print K } } END { for ( l in J ) printf("%s ",J); }' I'm trying to add columns and lines in single line. line... (6 Replies)
Discussion started by: busyboy
6 Replies

6. Shell Programming and Scripting

awk - count character count of fields

Hello All, I got a requirement when I was working with a file. Say the file has unloads of data from a table in the form 1|121|asda|434|thesi|2012|05|24| 1|343|unit|09|best|2012|11|5| I was put into a scenario where I need the field count in all the lines in that file. It was simply... (6 Replies)
Discussion started by: PikK45
6 Replies

7. Shell Programming and Scripting

awk math and csv output

Hi I have this list 592;1;Z:\WB\DOCS;/FS3_100G/FILER112/BU/MPS/DOCS;;;;\\FILER112\BUMPS-DOCS\;580,116,544,878 Bytes;656,561 ;77,560 592;2;Z:\WB\FOCUS;/FS3_100G/FILER112/BU/MPS/FOCUS;;;;\\FILER112\BUMPS-FOCUS\;172,430 Bytes;6 ;0 ... (12 Replies)
Discussion started by: nakaedu
12 Replies

8. Shell Programming and Scripting

Need help with AWK math

I am trying to do some math, so that I can compare the average of six numbers to a variable. Here is what it looks like (note that when I divide really big numbers, it isn't a real number): $ tail -n 6 named.stats | awk -F\, '{print$1}' 1141804 1140566 1139429 1134210 1084682 895045... (3 Replies)
Discussion started by: brianjb
3 Replies

9. Shell Programming and Scripting

awk math operation on two files

Hi, I need your help. I've got two files and i need to add 2nd line after occurrence of "Group No X" from data2.txt to 3rd line (after occurrence of "Group No X") from data1.txt. There is the same number of "Groups" in both files and the numbers of groups have the same pattern. data1.txt Group... (2 Replies)
Discussion started by: killerbee
2 Replies

10. UNIX for Dummies Questions & Answers

awk logic and math help

Hi, My file has 2 fields and millions of lines. variableStep chrom=Uextra span=25 201 0.5952 226 0.330693 251 0.121004 276 0.0736858 301 0.0646982 326 0.0736858 401 0.2952 426 0.230693 451 0.221004 476 0.2736858 Each field either has a... (6 Replies)
Discussion started by: wyarosh
6 Replies
Login or Register to Ask a Question