Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Руководство по Bash для начинающих
Назад Глава 6: Язык программирования GNU awk Вперед

Подводим итог

Утилита gawk интерпретирует язык программирования специального назначения, в котором с помощью нескольких строк кода выполняются простые управляемые данными операции переформатирования. Это бесплатная версия повсеместно используемой команды UNIX awk.

Этот инструмент читает строки входных данных и может легко формировать выходной поток в виде колонок. Для фильтрации и форматирования конкретных полей обычно используется программа print.

Объявление переменных, осуществляемое на лету, довольно простое, и позволяет в обрабатываемом входном потоке подсчитывать суммы, выполнять статистические и другие операции. Переменные и команды можно поместить в скрипт awk и выполнить скрипт в фоновом режиме.

Что еще нужно знать о языке awk:

  • Язык остается хорошо известным среди систем UNIX и аналогичных но — только для выполнения подобных задач, В настоящее время чаще пользуются языком Perl. Однако, кривая обучения для языка awk гораздо круче (это значит, что вы за очень короткое время выучите больше). Иными словами, Perl труднее в изучении
  • За обоими языками Perl и awk закрепилась репутация непонятных даже для тех авторов программ, которые им практически пользуются. Поэтому в качестве документации используйте код!

Упражнения

Ниже приведено несколько практических примеров, в которых язык awk может оказаться полезным.

  1. Для первого упражнения вашими входными данными будут строки следующего вида:
    Username:Firstname:Lastname:Telephone number
    

    Сделайте скрипт awk, который будет конвертировать такие строки в записи LDAP следующего формата:

    dn: uid=Username, dc=example, dc=com
    cn: Firstname Lastname
    sn: Lastname
    telephoneNumber: Telephone number
    

    Создайте файл, содержащий пару тестовых записей, и проверьте работу скрипта.

  2. Создайте скрипт Bash, использующий команду awk и стандартные команды UNIX, который будет показывать трех пользователей, использующих наибольший объем дискового пространства файловой системы /home (если у вас нет директория, хранящего в отдельном разделе домашние директории, создайте скрипт для директория "/"; он присутствует в любой системе UNIX). Сначала выполните команды в командной строке. Затем поместите их в скрипт. Скрипт должен формировать понятный для чтения результат (понятный, по мнению вашего начальника). Если все будет работать так, как надо, перенаправьте результат работы себе по электронной почте (например, используйте команду mail -s Disk space usage <you@your_comp> < result).

    Если запущен демон квот, то используйте эту информацию, если нет, то воспользуйтесь командой find.

  3. Создайте выходной поток в стиле XML из строк входного потока, использующих символ табуляции в качестве разделителя и имеющих следующий вид:

    Вывод должен быть следующим:

    Кроме того, если вы что-нибудь знаете об XML, напишите скрипты BEGIN и END, предназначенные для завершения создания этой таблицы. Или сделайте это в HTML.


Предыдущий раздел: Оглавление Следующий раздел:
Переменные Gawk   Глава 7