Первые, основные сценарии оболочки здравомыслие:
- Всегда приложить свой скрипт в одинарных кавычках
Примечания что скрипт это единственный аргумент - или имя файла с '-f file
'.
Скрипт awk представляет собой последовательность «<pattern> <action>
». Действие заложено в фигурных скобках «{}
» для ясности - и здравого смысла, снова.
Как сказал Pax, первый пример должен быть:
awk -v -e e='he' '{ print e }'
Второй пример непостижима - вы, вероятно, имел в виду:
awk '{ print "hello" }'
переменная NF это число полей на линии. Вы можете получить AWK интерпретировать
awk 'NF { print "hello" }'
как будто есть какие-либо данные по входной линии (NF! = 0, или число полей не равен нулю), а затем напечатать «привет».
Последний пример также непостижим; ARGV - это массив аргументов в awk, а в командной строке ничего нет. Но это одномерный массив. Ваша нотация суб-сценариев хочет рассматривать ее как словарь Python или хеш Perl с двумя индексами в сочетании. Вы в порядке - awk поддерживает ассоциативные массивы; но поскольку вы не добавили ничего в массив в ARGV [5,2], он ничего не печатает.
Что о с различными массивами? Могу ли я разделить элементы различных массивов друг на друга, как: 1 РАЗРЫВА 2 2 DIVIDE 4 => 0,5 0,5 возможно? –