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