awk OR statement

Yes. There's logical OR || that you can use:

awk '{if ($2=="abc" || $2=="def") print "blah" }'

You would not write this code in awk:

awk '{if ($2=="abc") print "blah"}'

you would write this instead:

awk '$2=="abc" {print "blah"}'

and to add an "or" would be either of these depending on what you're ultimately trying to do:

awk '$2~/^(abc|def)$/ {print "blah"}'

awk '$2=="abc" || $2=="def" {print "blah"}'

awk '
BEGIN{ split("abc def",tmp); for (i in tmp) targets[tmp[i]] }
$2 in targets {print "blah"}
'

That last one would be most appropriate if you have several strings you want to match.


awk '{if ($2=="abc" || $2=="def") print "blah"}'

Tags:

Awk