Подводя итог ....
Это работает:
awk 'BEGIN { FS=":"; }
{ print $1 $3 $5; }' /etc/passwd
Но это не так:
awk 'BEGIN { FS=":"; }
{ echo $1 $3 $5; }' /etc/passwd
Я хотел бы знать, почему.
Структура выполнения awk
такова: pattern { операторы действия }
Действия
. Операторы действий заключены в фигурные скобки, { и }. Операторы действия состоят из обычных операторов присваивания, условных операторов и циклов. встречающихся в большинстве языков. Операторы, управляющие операторы и
print
- это оператор ввода/вывода awk
.
Из manpage:
print Печать текущей записи. Выводимая запись завершается значением ORS.
Посетите manual>Оператор print:
Оператор print
Используйте оператор print для создания вывода с простым, стандартным форматированием. Вы указываете только строки или числа для печати в списке, разделенном запятыми. Они выводятся, разделенные одинарными пробелами, за которыми следует новая строка. Оператор выглядит следующим образом:
print item1, item2, ...
Для получения дополнительной информации посетите man awk
.
Также обратите внимание, что:
PATTERNS AND ACTIONS
AWK is a line-oriented language. The pattern comes first, and then the action. Action statements are
enclosed in { and }. Either the pattern may be missing, or the action may be missing, but, of course, not
both. If the pattern is missing, the action is executed for every single record of input. A missing action
is equivalent to
{ print }
which prints the entire record.
awk
не имеет ключевого слова/заявления echo
.
$ man awk | grep echo | wc -l
0