awk division error - 0


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk division error - 0
# 1  
Old 12-24-2010
awk division error - 0

input
Code:
0	0	9820373	2069	0	0	11485482

Code:
awk '{print ($1/$3) / ($4/$7)}' input

error
Quote:
awk: division by zero
input record number 1, file input
source line number 1
Is there any way to fix this problem ?
# 2  
Old 12-24-2010
are you sure you have typed correct input? Because on my computer it works and results to 0:
Code:
>awk '{print ($1/$3) / ($4/$7)}'
0       0       9820373 2069    0       0       11485482
0

Anyway you may check whether the divisor is equal to 0 and skip such lines or produce 0 without performing any divisions.
# 3  
Old 12-24-2010
some of the lines are actually 0.22 or some thing. I'm still getting the same error
# 4  
Old 12-24-2010
Looks like in some reocrds, $3/$7 is missing or zero, you may verify this using below:
Code:
awk '{if(!$3 || $3==0 || !$7 || $7==0) print}' input

# 5  
Old 12-24-2010
if you want to have as the result 0 instead of fatal error you may use the following:
Code:
>awk '{_div1= $3 ? ($1 / $3) : 0 ; _div2 = $7 ? ( $4 / $7 ) : 0; _res = _div2 ? ( _div1 / _div2 ) : 0 ; print _res }'
0 0 0 0 0 0 0 0 0 0 0 0 
0
0.2 0.2 0.2 0.2 0.2 0.2 0.2
1
1 2 3 4 5 6 7 8 
0.583333

If you need, I can send you the explanation
# 6  
Old 12-24-2010
May be I haven't explained well enogu. Here is my real example.
I have 73 sets, each set containing 4 columns (example red and blue) and unique header.

input
Code:
gName	1_rawcounts	1_KPM	1.ed(all reads)	1_total_length	21_rawcounts	21_KPM	21.ed(all reads)	21_total_length
E3_c1-	0	0	8820373	2069	0	0	11485482	2069
E3_c2-	0	0	8820373	2069	0	0	11485482	2069
E3_c3-	0	0	8820373	2069	0	0	11485482	2069
E3_c4-	0	0	8820373	2069	0	0	11485482	2069

Code:
awk '{print ($2/$5) / ($4 / $5) "\t" ($6/$9) / ($8/$9)}' input

needed output
Code:
gName	1	21
E3_c1-	0	0
E3_c2-	0	0
E3_c3-	0	0
E3_c4-	0	0


Last edited by quincyjones; 12-24-2010 at 07:21 PM..
# 7  
Old 12-25-2010
The first line in the file is the header, so you need to skip it
Code:
awk 'NR>1{print $1 "\t" ($2/$5) / ($4 / $5) "\t" ($6/$9) / ($8/$9)}' infile

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

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 / rs and kbw / ws. There are times when the iostat data... (5 Replies)
Discussion started by: tommyd
5 Replies

2. Shell Programming and Scripting

awk Division By Zero Bypass

Hi Friends, I don't understand why "a" is always being printed as zero, when I execute the following command. awk '{if($6||$8||$10||$12==0)a=b=c=d=0;else (a=$5/$6);(b=$7/$8);(c=$9/$10);(d=$11/$12); {print... (6 Replies)
Discussion started by: jacobs.smith
6 Replies

3. Shell Programming and Scripting

awk - Division with condition

Hi Friends, I have an input file like this cat input chr1 100 200 1 2 chr1 120 130 na 1 chr1 140 160 1 na chr1 170 180 na na chr1 190 220 0 0 chr1 220 230 nd 1 chr2 330 400 1 nd chr2 410 450 nd nd chr3 500 700 1 1 I want to calculate the division of 4th and 5th columns. But, if... (3 Replies)
Discussion started by: jacobs.smith
3 Replies

4. Shell Programming and Scripting

variables division with awk

hello i try to divide 2 variables in order to get a percentage--that's why i'm not interested in integer division--but nothing seems to work I think awk is suitable for this but i'm not quite sure how to use it.. any ideas? here's what I want to do: percentage = varA/varB thank you (2 Replies)
Discussion started by: vlm
2 Replies

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

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

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

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

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

10. 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
Login or Register to Ask a Question