你用对awk了吗?

今天折腾OmniOS上的awk,结果发现很简单的一个程序居然执行出错:

root@localhost:/root# awk 'function print_name_and_age(name, age) { print name" is "age" old" } {print_name_and_age($1, $2)}'
awk: syntax error near line 1
awk: bailing out near line 1

而相同的程序在gawk下运行的好好的。求助stackoverflow,得到结论如下:

(1)OmniOS上有nawk/usr/bin/awk(默认的awk)和/usr/xpg4/bin/awk。建议使用nawk/usr/bin/awk是老版本的awk,很多feature都不支持(基于illumos内核的操作系统,包括Solaris可能都需要注意这个问题)。
(2)“bailing out”是老版本awk的输出日志。所以一旦有这样的日志输出,需要考虑一下是不是使用的awk版本有问题。