Читаем Linux и UNIX: программирование в shell. Руководство разработчика. полностью

$ awk '{print $0}' grade.txt > grade.out

При этом выходные данные не будут отображаться на экране.

Второй способ заключается в применении команды tee, о которой рассказывалось в главе 5. Выходные данные передаются в файл и одновременно отображаются на экране. Например:

$ awk '{print $0}' grade.txt | tee grade.out

Отображение всех записей

В приведенной ниже команде утилита awk просматривает файл grade.txt и, поскольку шаблон не указан, отображает содержимое всех записей:

$ awk '{print $0}' grade.txt

M. Tansley05/9948311Green84044
J. Lulu06/9948317green92426
S. Bunny02/9948Yellow123528
J. Troll07/994842Brown-3122626
L. Tansley05/994712Brown-2123028

Отображение отдельных полей всех записей

Предположим, требуется отобразить на экране только имена спортсменов и названия поясов, которыми они обладают. Соответствующие данные хранятся в полях $1 и $4, поэтому введем такую команду:

$ awk '{print $1, $4}' grade.txt

M. Tansley Green

J. Lulu green S. Bunny Yellow J. Troll Brown-3

L. Tansley Brown-2

Отображение заголовка отчета

Результат работы предыдущей команды выглядит не слишком привлекательно. Рассмотрим, какие шаги можно предпринять, чтобы улучшить его. Прежде всего выровняем границы полей посредством символов табуляции. Табуляция создается с помощью Escape–последовательности \t (об управляющих последовательностях речь пойдет ниже). Кроме того, для придания отчету солидности добавим к нему заголовок, включающий названия полей, а также разделительную линию, которая отображается

в отдельной строке благодаря Escape–последовательности \n.: Заголовок отчета формируется в процедурной части шаблона begin.

$ awk 'BEGIN {print "Name Belt\n -"} \

{print $1 " \t" $4}' grade.txt

NameBelt
M. TansleyGreen
J. Lulugreen
P. BunnyYellow
J. TrollBrown-3
L. TansleyBrown-3

Отображение резюме отчета

Чтобы добавить в конец отчета строку "end‑of‑report", следует воспользоваться шаблоном end. Этот шаблон употребляется для обозначения действий, которые выполняются после обработки последней записи входного файла.

$ awk 'BEGIN {print "Name\n "} {print $1} \

END {print "\nend‑of‑report"}' grade.txt

Name

M. Tansley

J. Lulu

P. Bunny , .

J. Troll L. Tansley

end‑of‑report

Обработка сообщений об ошибках

При работе с утилитой awk почти невозможно избежать синтаксических ошибок. Эта утилита выводит на экран искомую строку и указывает, в каком ее месте возникла ошибка. Но сами сообщения об ошибках не слишком информативны и не всегда могут помочь в разрешении проблем.

Давайте смоделируем ситуацию, при которой возникает синтаксическая ошибка, например, пропустим двойную кавычку в предыдущей команде:

$ awk 'BEGIN {print "Name\n "} {print $1} \

END {print "\nend‑of‑report}' grade.txt

awk: cmd. line:2: END {print "\nend‑of‑report}

awk: end. line:2: ^ unterminated string

Если вы впервые сталкиваетесь с утилитой awk, краткость подобных сообщений может вас смутить. Предлагаем вам перечень правил обнаружения ошибок:

   • убедитесь, что сценарий awk целиком заключен в одинарные кавычки;

   • удостоверьтесь, что все кавычки внутри сценария являются парными;

   • проверьте, заключены ли процедуры в фигурные скобки, а условные конструкции - в круглые скобки.

Более понятным является сообщение об ошибке, возникающей при создании ссылки на несуществующий файл:

$ awk 'END {print "End‑of‑report"}' grades.txt

awk: cmd. line":2: fatal: cannot open file 'grades.txt' for reading (No such file or directory)

Ввод данных с клавиатуры

Давайте посмотрим, что произойдет, если не указать файл grade.txt в командной строке:

$ awk 'BEGIN {print "Name Belt\n "} \

{print $1" \t"$4}'

Name Belt

>

Перейти на страницу:

Похожие книги

112 страниц про Париж. Опыт создания путеводителя (в помощь самостоятельным туристам)
112 страниц про Париж. Опыт создания путеводителя (в помощь самостоятельным туристам)

  По Парижу приятно гулять, бесцельно бродить, кружить по узким улочкам, отдыхать в маленьких кафе и в парках у фонтанов. Здесь есть все для любителей архитектуры, ценителей живописи, театралов, меломанов, гурманов, поклонников всевозможных развлечений. Париж притягивает, удивляет, очаровывает, постепенно приоткрывая тайны любознательному гостю, который теряется от сложности выбора: что же увидеть прямо сейчас, а что отложить на потом. Мои 112 страниц про Париж, надеюсь, помогут сделать этот выбор. Предложенные 7 прогулок по городу включают в себя не только известные всему миру достопримечательности, но и множество других, которые часто остаются за пределами стандартных туристических маршрутов.  

Елена Р Стамбулян , Елена Р. Стамбулян

Руководства / Путеводители / Словари и Энциклопедии
40+. Уход за телом
40+. Уход за телом

Женщина после 40 лет – настоящая богиня, умудренная опытом и оттого еще более прекрасная. Но чтобы надолго сохранить красоту и молодость, нужно постоянно собой заниматься: ухаживать за своим телом, руками и ногами, выполнять физические упражнения и соблюдать диету. Благодаря этой книге вы научитесь самостоятельно готовить омолаживающие, питательные, увлажняющие кремы и маски, а также скрабы и пилинги из натуральных продуктов; выполнять легкие и эффективные упражнения для стройной фигуры и профилактики варикозного расширения вен, делать массаж рук и ног, навсегда избавитесь от целлюлита и сможете легко ориентироваться в выборе омолаживающих процедур в СПА-салонах и хирургических операций в клиниках красоты. Правила здорового питания, популярные диеты и рецепты полезных блюд – в этой книге есть все, что поможет 40-летним женщинам всегда быть в форме.

Анастасия Витальевна Колпакова

Здоровье / Руководства / Здоровье и красота / Дом и досуг / Словари и Энциклопедии