Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations strongm on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

awk syntax error

Status
Not open for further replies.

yesornot

Technical User
Apr 15, 2015
7
PL
hi
expected is to print single 'obsolete' or single 'input error' text (when conditions are met), but for the first if condition print (in this example):
1 3 fields, a>10
2 3 fields, a>10

what is wrong with "exit" in code below?

Code:
# echo "a b c\na b c"|awk -va=11 '{if (NF==3&&a>10) print NR,NF" fields, a>10"; else if (NF==2&&a<=10) print "obsolete"; else print "input error"}'
1 3 fields, a>10
2 3 fields, a>10
# echo "a b c\na b c"|awk -va=10 '{if (NF==3&&a>10) print NR,NF" fields, a>10"; else if (NF==2&&a<=10) print "obsolete"; else print "input error"}'
input error
input error
# echo "a b c\na b c"|awk -va=10 '{if (NF==3&&a>10) print NR,NF" fields, a>10"; else if (NF==2&&a<=10) print "obsolete"; else print "input error";exit}'
input error
# echo "a b c\na b c"|awk -va=11 '{if (NF==3&&a>10) print NR,NF" fields, a>10"; else if (NF==2&&a<=10) print "obsolete"; else print "input error";exit}'
1 3 fields, a>10
# echo "a b\na b"|awk -va=10 '{if (NF==3&&a>10) print NR,NF" fields, a>10"; else if (NF==2&&a<=10) print "obsolete"; else print "input error";exit}'
obsolete
# echo "a b c\na b c"|awk -va=11 '{if (NF==3&&a>10) print NR,NF" fields, a>10"; else if (NF==2&&a<=10) print {"obsolete";exit}; else {print "input error";exit}}'
 Syntax Error The source line is 1.
 The error context is
                {if (NF==3&&a>10) print NR,NF" fields, a>10"; else if (NF==2&&a<=10) print >>>  { <<<
 awk: 0602-502 The statement cannot be correctly parsed. The source line is 1.
 Syntax Error The source line is 1.
#
 
Replace this:
print {"obsolete";exit}
with this:
{print "obsolete";exit}

Hope This Helps, PH.
FAQ219-2884
FAQ181-2886
 
thank you - also ; was causing error

print {"obsolete";exit};

replaced with
{print "obsolete";exit}

and it works now.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top