1


0

"awk:関数systimeが定義されていません。"

しかしsystimeは組み込みコマンドです

4 Answer


5


Solarisでは、 / usr / bin / awk`はデフォルトでは / usr / bin / oawk`へのリンクです。これは systime`を組み込み(あるいは7th Edition AWK上の他の多くの拡張)として認識しません。 。 `/ usr / bin / awk`を / usr / bin / nawk`に再リンクするか、 nawk`を直接使用するか、またはGNU Awk( gawk`)をインストールして使用してください。

HP-UX、AIXのような他のUnixシステムも同様の問題を抱えているかもしれません。 MacOS X(そして、推論によるとBSD)は、非GNU、非拡張バージョンの `awk`をインストールします(訂正してくれてありがとう、DMcKee)。 Linuxはそうではありません。それはメイン/唯一の `awk`としてGNU Awkを使用します。 もちろん、GNU Awkはこれらのどのシステムにも簡単にインストールできます。


3


awkの「風味」の問題であるように思われます。

GAWK(GNU awk)にはsystime()が含まれていますが、使用しているバージョンには含まれていないかもしれません。

systime呼び出しがawkスクリプト自体の中の時間差を追跡することを意図していない限り、awk systime()関数の欠如を回避するためのトリックは、このシステム変数の値をawkコマンドラインの変数として渡すことです。


2


例として、私のシステムには gawk`と mawk`の両方がインストールされています。

echo | mawk '{print systime()}'

生成します:

mawk:2行目:function systimeは定義されていません

しながら

echo | gawk '{print systime()}'

生成します:

1252953754


1


これが私がタイムスタンプを取得するためにしたことです

nawk '{system( "日付%Y-%m-%d%H:%M:%S | tr -d \" \ n \ "");印刷 "" $ 0}'