Pregunta

" awk: la función systime no está definida. "

pero systime es un comando integrado

¿Fue útil?

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" " <*> } '
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top