What's wrong with this awk?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting What's wrong with this awk?
# 1  
Old 06-24-2012
What's wrong with this awk?

Code:
ZSCORE=$(awk "BEGIN {if($STDEVIATE>0) {print ZSCORER=$(awk "BEGIN{print (${ALL} - ${AVERAGE}) / ${STDEVIATE}}")}else print "0"}")

awk: fatal: division by zero attempted
awk: BEGIN {if(0==0) {print ZSCORER=}else print 0}
awk:                                ^ syntax error

Code:
ALL=9
STDEVIATE=0
AVERAGE=3

i want the code to do the following if and only if STDEVIATE is greater than 0:

Code:
{print ZSCORER=$(awk "BEGIN{print (${ALL} - ${AVERAGE}) / ${STDEVIATE}}

however, it appears the awk statement is executing the code anyway.

if the STDEVIATE is not greater than 0, i just want it print out "0".

can someone help me modify this?

os: linux/sunos
bash:shell
# 2  
Old 06-24-2012
The inner command substitution will always execute because the shell needs the result before it can fully specify the outer command substitution.

You do not need to use more than one AWK invocation for your task. Just use one. Also, have a look at what the AWK documentation has to say about passing in variables. It's much simpler, cleaner, and less error prone to use the -v option or the var=value parameter style than to embed shell variables in AWK code.

Regards,
Alister
This User Gave Thanks to alister For This Post:
# 3  
Old 06-24-2012
Quote:
Originally Posted by alister
The inner command substitution will always execute because the shell needs the result before it can fully specify the outer command substitution.

You do not need to use more than one AWK invocation for your task. Just use one. Also, have a look at what the AWK documentation has to say about passing in variables. It's much simpler, cleaner, and less error prone to use the -v option or the var=value parameter style than to embed shell variables in AWK code.

Regards,
Alister
thanks, i think igot it now!!

Last edited by SkySmart; 06-24-2012 at 11:14 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

What is wrong with my awk command?

The below code usually works when the value for the COLUMN variable is numerical. but im in a situation where the number of fields in a file is not definitive. it changes. but what is static is that the value i want to retrieve from the log is 3 fields from the last field. which is what i... (9 Replies)
Discussion started by: SkySmart
9 Replies

2. Shell Programming and Scripting

What is wrong with my awk code?

Hi there, I am trying to select a number of lines based on the lat. lon columns in a file but my awk code gives me empty result. Here is my file: 20100213 102212 33.1185 39.4078 2.9 20100214 141753 33.1058 39.9068 2.9 20100218 115828 33.1907 39.3575 2.9 20100225 220001 33.1932 39.9448... (10 Replies)
Discussion started by: johankor
10 Replies

3. Shell Programming and Scripting

What's wrong with my awk

file1: maximum_delay time: 102.794 ms maximum_delay time: 92.977 ms maximum_delay time: 98.895 ms maximum_delay time: 96.891 ms maximum_delay time: 86.966 ms maximum_delay time: 95.91 ms maximum_delay time: 98.921 ms maximum_delay time: 89.881 ms maximum_delay time: 92.931 ms... (1 Reply)
Discussion started by: yanglei_fage
1 Replies

4. Shell Programming and Scripting

What's wrong with this awk?

I have a file and if I'm doing following action on that file it's coming up correctly awk -F"," '/DATA_TYPE/ { cnt += $3 } END { print " DATA_TYPE count=" cnt}' inter DATA_TYPE count=19593131 now if I'm changing same AWK, so that now it can accept variable, then it's somehow not working.... (3 Replies)
Discussion started by: manas_ranjan
3 Replies

5. Shell Programming and Scripting

what's wrong with my awk

echo "abc:bcd" |awk '{split($0,b,":");print "b" is good }' I want to "bcd" is good , anything is wrong with my, please don't change my thought with split, I just want to know what's wrong :o (1 Reply)
Discussion started by: yanglei_fage
1 Replies

6. Shell Programming and Scripting

what's wrong with my awk line?

] && { echo "The free mem need to be more than 2G" } (3 Replies)
Discussion started by: yanglei_fage
3 Replies

7. Shell Programming and Scripting

awk... what is wrong?

Hi there, what is wrong with this? grep ">>" alarms_temp | awk '{print substr($5, 2), $7}' | read var1 var2 echo "$var1" echo "$var2" Both variable are empty, but if i run: grep ">>" alarms_temp | awk '{print substr($5, 2), $7}' I have: 0 9 as a result. (2 Replies)
Discussion started by: marimovo
2 Replies

8. UNIX for Dummies Questions & Answers

what is wrong in this awk or grep ....

hi champs, i have a strange problem, let , i have a array1, whose 1st character is ${array1}=h let i want to search test.txt by awk/grep where the 1st character is the ${array1}.... if i am seraching by awk/grep by using variable..it return no rows from test.txt... awk -v find=${array1}... (2 Replies)
Discussion started by: manas_ranjan
2 Replies

9. Shell Programming and Scripting

what is wrong with my awk statment?

I am looking to find something in the hour(in field $2) of 03:00:07 and 04:00:07 and 05:00:07 and must contain something in field 4... why doesn't below command work? I try to use grep .. but since I am running this in loop, it's best I use the awk .. can someone please advise.. I am pretty... (1 Reply)
Discussion started by: hankooknara
1 Replies

10. Shell Programming and Scripting

whats wrong with this awk???

while read LINE; do echo |awk -v LIN="${LINE}" '{print substr(LIN,1,7)","substr(LIN,8,5)" ,"substr(LIN,14,10)","substr(LIN,24,6)" ,"substr(LIN,30,8)}'; done < exp1.txt exp1.txt = 1234 grgrg 203902 ksdjh oehr weo why it doesn't work?? thanks. (5 Replies)
Discussion started by: george_
5 Replies
Login or Register to Ask a Question