在awk中,您可以对给定的模式执行操作,例如:
echo foo | awk '/foo/ {print "foo"}'
Run Code Online (Sandbox Code Playgroud)
或者您可以在输入结束时执行操作,例如:
echo foo | awk 'END {print "END"}'
Run Code Online (Sandbox Code Playgroud)
但似乎不可能同时做到这两点,例如:
# echo foo | awk '/foo/ || END {print "foo or END"}'
awk: syntax error at source line 1
context is
/foo/ || >>> END <<< {print "foo or END"}
awk: bailing out at source line 1
Run Code Online (Sandbox Code Playgroud)
这可能吗?
不.这样做:
awk '
/foo/ { prtInfo() }
END { prtInfo() }
function prtInfo() { print "foo or END" }
'
Run Code Online (Sandbox Code Playgroud)