Frage

"awk. Function systime nicht definiert ist"

aber systime wird in Befehl ein eingebauter

War es hilfreich?

Lösung

Unter Solaris /usr/bin/awk standardmäßig ist ein Link zu /usr/bin/oawk, die systime als Einbau in (oder vielen anderen Erweiterungen über die 7. Auflage AWK) nicht erkennt. Entweder /usr/bin/awk relink /usr/bin/nawk oder benutzen nawk direkt oder erhalten GNU Awk (gawk) installiert und verwendet werden.

Andere Unix-Systeme wie HP-UX, AIX können ähnliche Probleme haben. MacOS X (und durch Folgerung, BSD) installieren Sie ein nicht-GNU, nicht-erweiterte Version von awk (Dank für die Korrektur, Dmckee). Linux nicht; es nutzt GNU Awk als Haupt / nur awk. Natürlich kann GNU Awk leicht auf jedem dieser Systeme installiert werden.

Andere Tipps

Es scheint eine Frage der awk "Geschmack" zu sein.

GAWK (Gnu awk) umfasst systime (), aber vielleicht die Version, die Sie verwenden, nicht ...

Es sei denn, sind SysTime Anrufe gemeint Spur Zeitdifferenzen innerhalb des awk-Skript zu halten selbst, ein Trick, den Mangel an awk systime zu umgehen () Funktion wäre, den Wert dieser Systemvariable als eine Variable auf der awk Befehlszeile übergeben .

Als Beispiel auf meinem System sowohl gawk und mawk installiert sind.

echo |mawk '{print systime()}'

erzeugt:

mawk: line 2: function systime never defined

, während

echo |gawk '{print systime()}'

erzeugt:

1252953754

Hier ist, was ich tat, den Zeitstempel bekommen

nawk '{system("date +%Y-%m-%d %H:%M:%S|tr -d \"\n\"");print" " $0 } '
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top