GNU awk 有 switch 语句:
$ cat tst1.awk
{
switch($0)
{
case /a/:
print "found a"
break
case /c/:
print "found c"
break
default:
print "hit the default"
break
}
}
$ cat file
a
b
c
d
$ gawk -f tst1.awk file
found a
hit the default
found c
hit the default
或者使用任何 awk:
$ cat tst2.awk
/a/ {
print "found a"
next
}
/c/ {
print "found c"
next
}
{
print "hit the default"
}
$ awk -f tst2.awk file
found a
hit the default
found c
hit the default
就像在其他编程语言中一样,在需要时使用“break”或“next”。
或者,如果您喜欢使用标志:
$ cat tst3.awk
{ DEFAULT = 1 }
/a/ {
print "found a"
DEFAULT = 0
}
/c/ {
print "found c"
DEFAULT = 0
}
DEFAULT {
print "hit the default"
}
$ gawk -f tst3.awk file
found a
hit the default
found c
hit the default
不过,它与真正的“默认”的语义并不完全相同,因此这样的用法可能会产生误导。我通常不提倡使用全大写的变量名,但小写的“默认”会与 gawk 关键字发生冲突,因此该脚本将来无法移植到 gawk。