awk dà il seguente errore
Domanda
" awk: la funzione systime non è definita. "
ma systime è un comando incorporato
Soluzione
Su Solaris, / usr / bin / awk
è di default un collegamento a / usr / bin / oawk
, che non riconosce systime
come integrato (o molte altre estensioni rispetto alla 7a edizione AWK). Ricollegare / usr / bin / awk
su / usr / bin / nawk
o utilizzare direttamente nawk
o ottenere GNU Awk ( gawk
) installato e usalo.
Altri sistemi Unix come HP-UX, AIX potrebbero avere problemi simili. MacOS X (e, di conseguenza, BSD) installa una versione non-GNU, non estesa di awk
(grazie per la correzione, DMcKee). Linux no; utilizza GNU Awk come principale / unico awk
. Naturalmente, GNU Awk può essere facilmente installato su uno di questi sistemi.
Altri suggerimenti
Sembra essere una questione di awk "sapore".
GAWK (gnu awk) include systime (), ma forse la versione che stai usando non ...
A meno che le chiamate systime non abbiano lo scopo di tenere traccia delle differenze temporali all'interno dello stesso script awk, un trucco per aggirare la mancanza della funzione awk systime () sarebbe quello di passare il valore di questa variabile di sistema come variabile nella riga di comando di awk .
Ad esempio, sul mio sistema sono installati sia gawk
che mawk
.
echo |mawk '{print systime()}'
produce:
mawk: line 2: function systime never defined
, mentre
echo |gawk '{print systime()}'
produce:
1252953754
Ecco cosa ho fatto per ottenere il timestamp
nawk '{system("date +%Y-%m-%d %H:%M:%S|tr -d \"\n\"");print" " <*> } '