Awk if elseif syntax error


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Awk if elseif syntax error
# 1  
Old 05-18-2009
Awk if elseif syntax error

Below is the code.

Code:
    nawk -F "|" 'FNR==NR{a[$1]=$3 OFS $4 OFS $5 OFS $6;next} {\
 if ($5 in a)\
            {print $1,"ABC",$5,"I",a[$5], $2,$3,$4 OFS OFS OFS OFS OFS OFS OFS OFS $2"-"$3"-"$4} ; \
 elseif ($5=="g[0-9][0-9][0-9]")\
         print $1,"ABC",$5,"I",$5 OFS OFS OFS OFS $2,$3,$4 OFS OFS OFS OFS OFS OFS OFS OFS $2"-"$3"-"$4 ;\
     else\ 
            print $1,"ABC",$5,"I",OFS OFS OFS OFS OFS $2,$3,$4 OFS OFS OFS OFS OFS OFS OFS OFS $2"-"$3"-"$4}' OFS="|" file1 file2 > file3

Please help me correct the syntax error.
# 2  
Old 05-18-2009
  1. 'elseif' is a not a valid awk statement
  2. For matching regex use '~'
# 3  
Old 05-18-2009
Quote:
Originally Posted by vgersh99
  1. 'elseif' is a not a valid awk statement
  2. For matching regex use '~'

I made the changes but still doesnt work

Code:
    nawk -F "|" 'FNR==NR{a[$1]=$3 OFS $4 OFS $5 OFS $6;next} {\
 if ($5 in a)\
            {print $1,"ABC",$5,"I",a[$5], $2,$3,$4 OFS OFS OFS OFS OFS OFS OFS OFS $2"-"$3"-"$4} ; \
 else{
            if ($5~'/g[0-9][0-9][0-9]/')\
         print $1,"ABC",$5,"I",$5 OFS OFS OFS OFS $2,$3,$4 OFS OFS OFS OFS OFS OFS OFS OFS $2"-"$3"-"$4 ;\
     else\ 
            print $1,"ABC",$5,"I",OFS OFS OFS OFS OFS $2,$3,$4 OFS OFS OFS OFS OFS OFS OFS OFS $2"-"$3"-"$4}}' OFS="|" file1 file2 > file3

Help is appreciated
# 4  
Old 05-18-2009
Code:
$5 ~ /g[0-9][0-9][0-9]/
OR
$5 ~ "g[0-9][0-9][0-9]"

read 'man nawk' AGAIN!
# 5  
Old 05-18-2009
Quote:
Originally Posted by vgersh99
Code:
$5 ~ /g[0-9][0-9][0-9]/
OR
$5 ~ "g[0-9][0-9][0-9]"

read 'man nawk' AGAIN!
I read man pages.

Even harded coded value for $5 in if statement.

Code:
    nawk -F "|" 'FNR==NR{a[$1]=$3 OFS $4 OFS $5 OFS $6;next} {\
 if ($5 in a) {print $1,"ABC",$5,"I",a[$5], $2,$3,$4 OFS OFS OFS OFS OFS OFS OFS OFS $2"-"$3"-"$4} ; \
 else {\
     if ($5 ~ "g123") {\
         print $1,"ABC",$5,"I",$5 OFS OFS OFS OFS $2,$3,$4 OFS OFS OFS OFS OFS OFS OFS OFS $2"-"$3"-"$4} ;\
     else {\ 
            print $1,"ABC",$5,"I",OFS OFS OFS OFS OFS $2,$3,$4 OFS OFS OFS OFS OFS OFS OFS OFS $2"-"$3"-"$4}}}' OFS="|" file1 file2 > file3

still getting this error
Quote:
nawk: syntax error at source line 3
context is
>>> else <<< {\
nawk: illegal statement at source line 3
nawk: syntax error at source line 5
Appreciate help
# 6  
Old 05-18-2009
loose ';' and '\'.
Why do you need them?
# 7  
Old 05-18-2009
Quote:
Originally Posted by vgersh99
loose ';' and '\'.
Why do you need them?

If i dont have "\" then script waits at that point.

Are we not suppose to end lines of nawk with "\" if it is multiline command in korn shell script.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk syntax error

Hi All, I wrote a simple script.sh program for i in seq (22) do awk '$1==${i}' file1.txt|awk '{print $2}'> file${i}_study.txt done and then run it %bash %chmod +x script.sh % ./script.sh Give me error awk: $1==${i} awk: ^ syntax error Do you have any idea why... (3 Replies)
Discussion started by: senayasma
3 Replies

2. UNIX for Dummies Questions & Answers

If Then ElseIf Script - Confusion Around Expression's Syntax

Hello, I am relatively new to UNIX scripting and am learning a lot. I have already tried several searches on this website and have tried various syntax options suggested to no avail. I am obviously not writing the script correctly. I really do appreciate any and all the help. Below is an... (8 Replies)
Discussion started by: dqrgk0
8 Replies

3. Shell Programming and Scripting

Syntax error using Awk

more report2.txt how to modify the AWK to print above out put for given n no of inputs using report2.txt file? out put should be (3 Replies)
Discussion started by: kanakaraju
3 Replies

4. Shell Programming and Scripting

awk syntax error

Hi, I can't see what is wrong with the following command. I am extracting a dollar amount (AMT_REJ, 6th field) from a comma delimited record and need to output it as numeric, removing the $sign and decimal point and output to another file. Everything seems to work except the $ sign which I need... (1 Reply)
Discussion started by: ski
1 Replies

5. UNIX for Dummies Questions & Answers

awk Shell Script error : "Syntax Error : `Split' unexpected

hi there i write one awk script file in shell programing the code is related to dd/mm/yy to month, day year format but i get an error please can anybody help me out in this problem ?????? i give my code here including error awk ` # date-month -- convert mm/dd/yy to month day,... (2 Replies)
Discussion started by: Herry
2 Replies

6. UNIX for Dummies Questions & Answers

awk syntax error

I generate a fullpath variable two different ways: 1) concat two variables rootpath and relpath to give me fullpath 2) use 'find' to get the fullpath when I echo the variable, I get the same output for both. However, I print the variable from method 1 in the below loop I get "awk syntax... (0 Replies)
Discussion started by: orahi001
0 Replies

7. UNIX for Dummies Questions & Answers

'awk' syntax error

Due to some syntax error, my below code is not working. #!/usr/bin/ksh nawk ' BEGIN { cur_val=0; cur_zero=0; cur_nine=0; sum_zero=0; sum_nine=0; } /^/ { cur_val=substr($0,5,2); if("cur_val" == "0") { ... (3 Replies)
Discussion started by: lokiman
3 Replies

8. Shell Programming and Scripting

syntax error with awk.

A shell script a.sh calls an awk script using : awk -v OUTPUTDIR=${OUTPUTDIR}${OUTPUTDIRDATE} -f ${SCRIPTSPATH}chngNullBillId.awk ${INPUTFILE} chngNullBillId.awk : { if (substr($0,9,4)=="0000") printf( "%s0001%s", substr($0,1,8), substr($0,13,67) )>>${OUTPUTDIR}"goodfile.txt"; else print... (2 Replies)
Discussion started by: Amruta Pitkar
2 Replies

9. Shell Programming and Scripting

awk syntax error

mVar=0 count=`awk -F, '( ( $2 ~ /^GIVEUP$/ && $3 ~ /^NEW$/ ) || ( $2 ~ /^SPLIT$/ && $3 ~ /^NEW$/ ) || ( $2 ~ /^OPTION$/ && $3 ~ /^NEW$/ ) || ( $2 ~ /^OPTIONSPLIT$/ && $3 ~ /^NEW$/ ) ) { count++ } END { print count }' myCSV.csv myVar=`expr $myVar + $count` Can I do this? I get a syntax... (4 Replies)
Discussion started by: yongho
4 Replies

10. UNIX for Dummies Questions & Answers

awk syntax error

can anyone see the awk syntax error near line 1? I keep getting this error and I'm not familiar with awk very well yet so it is hard for me to see the errors. fyi: deleteuser* refers to files in the directory where each one ends with a different date ls -1 /mfupload/prod02/ftp/deleteuser* |... (12 Replies)
Discussion started by: k@ssidy
12 Replies
Login or Register to Ask a Question