44

awk 是否有一个OR声明,给出以下代码段:

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

是否可以添加一个OR语句以便 if $2==abc OR def -> print

4

3 回答 3

63

是的。您可以使用逻辑 OR ||

awk '{if ($2=="abc" || $2=="def") print "blah" }'
于 2013-04-05T17:22:33.137 回答
48

您不会在 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"}
'

如果您有多个要匹配的字符串,那么最后一个将是最合适的。

于 2013-04-05T17:30:48.090 回答
3
awk '{if ($2=="abc" || $2=="def") print "blah"}'
于 2013-04-05T17:23:48.720 回答