Ответ 1
Да. Там логический OR ||
, который вы можете использовать:
awk '{if ($2=="abc" || $2=="def") print "blah" }'
Имеет ли awk оператор OR
i.e, учитывая следующий фрагмент:
awk '{if ($2=="abc") print "blah"}'
Можно ли добавить оператор OR
, чтобы if $2==abc OR def -> print
?
Да. Там логический OR ||
, который вы можете использовать:
awk '{if ($2=="abc" || $2=="def") print "blah" }'
Вы не будете писать этот код в awk:
awk '{if ($2=="abc") print "blah"}'
вы должны написать это вместо:
awk '$2=="abc" {print "blah"}'
и добавить "или" будет любой из них в зависимости от того, что вы в конечном итоге пытаетесь сделать:
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"}
'
Последнее будет наиболее подходящим, если у вас есть несколько строк, которые вы хотите сопоставить.
awk '{if ($2=="abc" || $2=="def") print "blah"}'