Вопрос

"авк:Функция systime не определена."

но systime - это встроенная команда

Это было полезно?

Решение

В Solaris / usr / bin / awk по умолчанию является ссылкой на / usr / bin / oawk , которая не распознает systime как встроенный (или множество других расширений по сравнению с 7-м изданием AWK). Перепроверьте / usr / bin / awk в / usr / bin / nawk или используйте nawk напрямую, либо получите GNU Awk ( gawk) ) установлено и используется.

Другие системы Unix, такие как HP-UX, AIX, могут иметь аналогичные проблемы. MacOS X (и, как следствие, BSD) устанавливает не GNU, не расширенную версию awk (спасибо за исправление, DMcKee). Linux нет; он использует GNU Awk в качестве основного / единственного awk . Конечно, GNU Awk можно легко установить на любую из этих систем.

Другие советы

Кажется, это вопрос awk " flavour ".

GAWK (gnu awk) включает в себя systime (), но, возможно, версия, которую вы используете, не ...

Если вызовы systime не предназначены для отслеживания различий во времени внутри самого скрипта awk, хитрость для обхода недостатка функции awk systime () заключалась бы в передаче значения этой системной переменной в качестве переменной в командной строке awk. .

В качестве примера, в моей системе оба gawk и mawk устанавливаются.

echo |mawk '{print systime()}'

производит:

mawk: line 2: function systime never defined

в то время как

echo |gawk '{print systime()}'

производит:

1252953754

Вот что я сделал, чтобы получить метку времени

nawk '{system("date +%Y-%m-%d %H:%M:%S|tr -d \"\n\"");print" " <*> } '
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top