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 11-13-2012
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

Code:
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.
So can anyone, point me out what's wrong if variable passed to that same awk.

Code:
type="DATA_TYPE"
echo $type
DATA_TYPE
 awk -F"," -v type="$type" '/type/ { cnt += $3 } END { print type" count=" cnt}' inter
o/p= DATA_TYPE count=

# 2  
Old 11-13-2012
try

Code:
awk -F"," -v type="$type" '{if($0 ~ type) { cnt += $3 }} END { print type" count=" cnt}' inter

variables in awk doesn't work with /variable/

pamu

Last edited by pamu; 11-13-2012 at 09:49 AM..
# 3  
Old 11-13-2012
I think you can even leave the if out:
Code:
awk -F"," -v type="$type" '$0 ~ type { cnt += $3 } END { print type" count=" cnt}'

The /.../ construct has to contain a literal regex, so /type/ will search for occurrence of "type", not the contents of variable type.

Last edited by RudiC; 11-13-2012 at 12:11 PM..
# 4  
Old 11-13-2012
If you don't need a regular expression to match a pattern, don't use one. If you are looking for a literal string (as you were doing with /DATA_TYPE/), then either test for equality with == or use the index function.

Using a regular expression when not necessary, particularly a dynamic one, affords more opportunity for unintended results.

Regards,
Alister
This User Gave Thanks to alister For This Post:
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 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

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

6. Shell Programming and Scripting

What's wrong with this awk?

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 ALL=9 STDEVIATE=0... (2 Replies)
Discussion started by: SkySmart
2 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