Domanda

" awk: la funzione systime non è definita. "

ma systime è un comando incorporato

È stato utile?

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" " <*> } '
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top