awk выдает следующую ошибку
Вопрос
"авк:Функция 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" " <*> } '