44

awk にはORステートメントがありますか。つまり、次のスニペットが与えられます:

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

ORif のようにステートメントを追加することは可能$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 に答える