awk或声明

Num*_*pty 36 awk

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

awk '{if ($2=="abc") print "blah"}'
Run Code Online (Sandbox Code Playgroud)

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

P.P*_*.P. 54

是.||您可以使用逻辑OR :

awk '{if ($2=="abc" || $2=="def") print "blah" }'
Run Code Online (Sandbox Code Playgroud)


Ed *_*ton 41

你不会在awk中写这段代码:

awk '{if ($2=="abc") print "blah"}'
Run Code Online (Sandbox Code Playgroud)

你会写这个:

awk '$2=="abc" {print "blah"}'
Run Code Online (Sandbox Code Playgroud)

并添加"或"将取决于您最终尝试做的事情:

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"}
'
Run Code Online (Sandbox Code Playgroud)

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

  • @ae0709 awk 脚本的主体是一系列 `<condition> { <action> }` 语句。第一个脚本使用空条件(默认情况下为 true),然后将条件嵌入到 if 语句内脚本的操作部分中。习惯上,就像在 C 语言中你写的是 `if ( true ) { if (foo) { do_bar() } }` 而不是 `if (foo) { do_bar() }` (2认同)