Подтвердить что ты не робот

Оператор awk OR

Имеет ли awk оператор OR i.e, учитывая следующий фрагмент:

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

Можно ли добавить оператор OR, чтобы if $2==abc OR def -> print?

4b9b3361

Ответ 1

Да. Там логический OR ||, который вы можете использовать:

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

Ответ 2

Вы не будете писать этот код в 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"}
'

Последнее будет наиболее подходящим, если у вас есть несколько строк, которые вы хотите сопоставить.

Ответ 3

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