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

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

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

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

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

Что еще нужно знать о языке 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 из строк входного потока, использующих символ табуляции в качестве разделителя и имеющих следующий вид:

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

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


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