awk给出以下错误

时间:2009-09-14 18:22:14

标签: unix shell scripting sed awk

“awk:函数systime未定义。”

但是systime是一个内置命令

4 个答案:

答案 0 :(得分:5)

在Solaris上,/usr/bin/awk默认为/usr/bin/oawk的链接,systime无法将/usr/bin/awk识别为内置(或第7版AWK上的许多其他扩展)。可以将/usr/bin/nawk重新链接到nawk或直接使用gawk,也可以安装GNU Awk(awk)并使用它。

其他Unix系统(如HP-UX,AIX)可能存在类似问题。 MacOS X(以及推断,BSD)安装了非{GNU,非扩展版本的awk(感谢更正,DMcKee)。 Linux没有;它使用GNU Awk作为主要/唯一{{1}}。当然,GNU Awk可以很容易地安装在任何这些系统上。

答案 1 :(得分:3)

似乎是一种“味道”的问题。

GAWK(gnu awk)包含systime(),但是你使用的版本可能没有......

除非systime调用是为了跟踪awk脚本本身的时间差异,否则避免awk systime()函数缺失的一个技巧是将此系统变量的值作为变量传递给awk命令行

答案 2 :(得分:2)

例如,在我的系统上安装了gawkmawk

echo |mawk '{print systime()}'

产生

mawk: line 2: function systime never defined

,而

echo |gawk '{print systime()}'

产生

1252953754

答案 3 :(得分:1)

以下是我为获取时间戳所做的工作

nawk '{system("date +%Y-%m-%d %H:%M:%S|tr -d \"\n\"");print" " $0 } '