【问题标题】:awk gives the following errorawk 给出以下错误
【发布时间】:2010-11-28 05:34:58
【问题描述】:

“awk:未定义函数systime。”

但是 systime 是一个内置命令

【问题讨论】:

  • 你能告诉我们你正在使用的整个命令吗?使用如此有限的信息很难判断您在寻找什么。谢谢!

标签: unix shell scripting sed awk


【解决方案1】:

似乎是awk“风味”的问题。

GAWK (gnu awk) 包含 systime(),但可能您使用的版本不...

除非 systime 调用旨在跟踪 awk 脚本本身内的时间差异,否则避免缺少 awk systime() 函数的技巧是将此系统变量的值作为 awk 命令行上的变量传递.

【讨论】:

    【解决方案2】:

    例如,在我的系统上,gawkmawk 都已安装。

    echo |mawk '{print systime()}'
    

    产生:

    mawk: line 2: function systime never defined
    

    同时

    echo |gawk '{print systime()}'
    

    产生:

    1252953754
    

    【讨论】:

      【解决方案3】:

      在 Solaris 上,/usr/bin/awk 默认情况下是指向 /usr/bin/oawk 的链接,它不会将 systime 识别为内置(或第 7 版 AWK 上的许多其他扩展)。要么将/usr/bin/awk 重新链接到/usr/bin/nawk,要么直接使用nawk,或者安装并使用GNU Awk (gawk)。

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

      【讨论】:

      • 更正:至少对于 10.4 和 10.5 Mac OS,默认情况下 使用 gawk。它很容易使用 fink(或者可能是 macports)安装。
      【解决方案4】:

      这是我为获取时间戳所做的操作

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-21
        • 2021-03-28
        • 1970-01-01
        • 1970-01-01
        • 2019-02-14
        • 2019-07-26
        • 2022-01-01
        • 1970-01-01
        相关资源
        最近更新 更多