2009-09-14 76 views
1

「awk:函數系統時間未定義。」awk給出以下錯誤

但系統時間是內置命令

+0

你能告訴我們,您使用的是整個命令?用這種有限的信息很難判斷你正在尋找什麼。謝謝! – Buggabill 2009-09-14 18:25:29

回答

5

在Solaris,/usr/bin/awk是通過默認/usr/bin/oawk一個鏈路,這並不RECO gnize systime作爲內置(或第七版AWK中的很多其他擴展)。或者重新鏈接/usr/bin/awk/usr/bin/nawk或直接使用nawk,或者安裝GNU Awk(gawk)並使用它。

其他Unix系統(如HP-UX,AIX)也可能有類似的問題。 MacOS X(並且推斷,BSD)安裝了非GNU,非擴展版本awk(感謝您的糾正,DMcKee)。 Linux不會;它使用GNU Awk作爲主要/唯一的awk。當然,GNU Awk可以很容易地安裝在任何這些系統上。

+0

更正:至少對於10.4和10.5 Mac OS默認情況下不*使用gawk。它很容易安裝使用fink(或推測macports)。 – dmckee 2009-09-14 20:08:57

3

似乎是一個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 
1

這是我做得到的時間戳

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