awk da el siguiente error
Pregunta
" awk: la función systime no está definida. "
pero systime es un comando integrado
Solución
En Solaris, / usr / bin / awk
es por defecto un enlace a / usr / bin / oawk
, que no reconoce systime
como integrado (o muchas otras extensiones sobre la 7a Edición AWK). Vuelva a vincular / usr / bin / awk
a / usr / bin / nawk
o use nawk
directamente, u obtenga GNU Awk ( gawk
) instalado y utilízalo.
Otros sistemas Unix como HP-UX, AIX pueden tener problemas similares. MacOS X (y, por inferencia, BSD) instala una versión no extendida de GNU awk
(gracias por la corrección, DMcKee). Linux no lo hace; utiliza GNU Awk como principal / único awk
. Por supuesto, GNU Awk se puede instalar fácilmente en cualquiera de estos sistemas.
Otros consejos
Parece ser una cuestión de awk " sabor " ;.
GAWK (gnu awk) incluye systime (), pero tal vez la versión que está utilizando no ...
A menos que las llamadas systime estén destinadas a realizar un seguimiento de las diferencias de tiempo dentro del script awk en sí, un truco para evitar la falta de la función awk systime () sería pasar el valor de esta variable del sistema como una variable en la línea de comando awk .
Como ejemplo, en mi sistema están instalados gawk
y mawk
.
echo |mawk '{print systime()}'
produce:
mawk: line 2: function systime never defined
while
echo |gawk '{print systime()}'
produce:
1252953754
Esto es lo que hice para obtener la marca de tiempo
nawk '{system("date +%Y-%m-%d %H:%M:%S|tr -d \"\n\"");print" " <*> } '