awk - continue when encountered division error


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk - continue when encountered division error
# 1  
Old 11-04-2013
awk - continue when encountered division error

Hello,

How can I add a logic to awk to tell it to print 0 when encountering a division by zero attempted? Below is the code. Everything in the code works fine except the piece that I want to calculate read/write IO size. I take the kbr[j] / rs[j] and kbw[j] / ws[j]. There are times when the iostat data does not have any kbr or kbw.

thanks,

Code:
awk '
   /^Device:/{++i}
   /^dm-/{rs[i]+=$(NF-8);ws[i]+=$(NF-7);kbr[i]+=$(NF-6);kbw[i]+=$(NF-5)};
   END{
       printf ("%s, %s, %s, %s, %s, %s, %s, %s\n"), "Sample", "r/s", "w/s", "rIOsize", "wIOsize", "KB_read/s", "KB_write/s", "Total KB", "%Read/s", "%Write/s"
       for(j=1;j<=i;j++) if (kbr[j] + kbw[j])
           printf ("%s, %6.2f, %6.2f, %6.2f, %6.2f, %06.2f, %06.2f, %06.2f, %02.2f%, %02.2f%\n"), "Sample "j, rs[j], ws[j],
           kbr[j] / rs[j], kbw[j] / ws[j],
           kbr[j], kbw[j], kbr[j] + kbw[j],
           100 * kbr[j] / (kbr[j] + kbw[j]),
           100 * kbw[j] / (kbr[j] + kbw[j])}' OFS=, $FILE

# 2  
Old 11-04-2013
Use a Conditional Expression:
Code:
        rs[j] ? kbr[j] / rs[j] : "0",
        ws[j] ? kbw[j] / ws[j] : "0",
        kbr[j], kbw[j], kbr[j] + kbw[j],
        (kbr[j] + kbw[j]) ? 100 * kbr[j] / (kbr[j] + kbw[j]) : "0",
        (kbr[j] + kbw[j]) ? 100 * kbw[j] / (kbr[j] + kbw[j]) : "0"

This User Gave Thanks to Yoda For This Post:
# 3  
Old 11-04-2013
gee...why not simply test for when the denominator is zero?
Code:
(kbr[j] + kbw[j])

# 4  
Old 11-04-2013
Thanks Yoda. That works great.
# 5  
Old 11-04-2013
or implementing a div function:
Code:
function div(a,b) {
   return (b)?a/b:0
}

# 6  
Old 11-04-2013
Thank you, all. Much appreciated.

TD
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Notify as soon as an error is encountered in a script

Hi, The script below works okay and emails me the log in the end once the script completes but what I'm trying to do is to also notify me via an email as soon as the script encounters any error whatsoever. cat test.list hdisk0 00a6351a2c832da1 rootvg ... (7 Replies)
Discussion started by: mbak
7 Replies

2. Shell Programming and Scripting

awk & division

vmstat|awk '{print $3}'|tail -1 returns 6250511, but what I need is 24416, which is 6250511 divided by 256. Please advise. Thank you so much (2 Replies)
Discussion started by: Daniel Gate
2 Replies

3. AIX

Error encountered in creating a filesystem

Hi experts, Need help on the below error please. I am creating Filesystem and it fails with the below errors :( Command: failed stdout: yes stderr: no Before command completion, additional instructions may appear below. 0518-506 odmget: Cannot open object class PdAt ... (10 Replies)
Discussion started by: EngnrRG
10 Replies

4. Shell Programming and Scripting

Division problem -Awk

input one two three four 0 0 0 10424 0 102 0 15091 1 298 34 11111 0 10 0 1287 scripts awk 'NR>1{print ($1/$2) / ($3/$4)}' awk 'NR>1{ if ($1 ||$3 ||$2|| $4 == 0) print 0; else print (($1/$2)/($3/$4))}' error awk: division by zero input record number 1, file rm source line... (9 Replies)
Discussion started by: quincyjones
9 Replies

5. Shell Programming and Scripting

awk division error - 0

input 0 0 9820373 2069 0 0 11485482 awk '{print ($1/$3) / ($4/$7)}' input error Is there any way to fix this problem ? (25 Replies)
Discussion started by: quincyjones
25 Replies

6. UNIX for Advanced & Expert Users

awk: division by zero

I received error "awk: division by zero" while executing the following statement. SunOS 5.10 Generic_142900-15 sun4us sparc FJSV,GPUZC-M echo 8 | awk 'END {printf ("%d\n",NR/$1 + 0.5);}' file1.lst awk: division by zero Can someone provide solution? Thanks Please use code... (11 Replies)
Discussion started by: kumar77
11 Replies

7. Shell Programming and Scripting

awk error message: division by zero attempted

Hi, I'm executing unixbench tool v4.1 on an embedded system and I'm getting these error messages: Execl Throughput 1 2 3awk: /unixbench/unixbench-4.1.0/pgms/loops.awk:38: (FILENAME=- FNR=4) fatal: division by zero attempted Pipe Throughput 1 2 3 4 5 6 7 8 9 10awk:... (3 Replies)
Discussion started by: rogelio
3 Replies

8. Shell Programming and Scripting

Division by zero error message in AWK

How can I modify my awk code to get rid of the divion by zero error message? If I run the script without an input file, it should return error message "Input file missing" but not divison by zero. Code: #!/bin/nawk -f BEGIN { if (NR == 0) {print "Input file... (4 Replies)
Discussion started by: Pauline mugisha
4 Replies

9. Shell Programming and Scripting

error "awk: (FILENAME=- FNR=23) fatal: division by zero attempted"

Hi , I have file : after i run this command : there are error can we print blank line if output error ?? thanks.. ^^ (4 Replies)
Discussion started by: justbow
4 Replies

10. UNIX Benchmarks

Encountered error!

I used this on an AIX machine and encountered the following error. $ ls -l total 600 -rwxrwxrwx 1 e26936 dba 1491 Feb 07 1992 MANIFEST -rwxrwxrwx 1 e26936 dba 8148 Apr 05 1992 Makefile -rwxrwxrwx 1 e26936 dba 4852 Sep 06 2003 README -rwxrwxrwx... (0 Replies)
Discussion started by: puspendu
0 Replies
Login or Register to Ask a Question

Featured Tech Videos