Библиотека сайта rus-linux.net
Руководство по Bash для начинающих | ||
---|---|---|
Назад | Глава 6: Язык программирования GNU awk | Вперед |
Подводим итог
Утилита gawk интерпретирует язык программирования специального назначения, в котором с помощью нескольких строк кода выполняются простые управляемые данными операции переформатирования. Это бесплатная версия повсеместно используемой команды UNIX awk.
Этот инструмент читает строки входных данных и может легко формировать выходной поток в виде колонок. Для фильтрации и форматирования конкретных полей обычно используется программа print.
Объявление переменных, осуществляемое на лету, довольно простое, и позволяет в обрабатываемом входном потоке подсчитывать суммы, выполнять статистические и другие операции. Переменные и команды можно поместить в скрипт awk и выполнить скрипт в фоновом режиме.
Что еще нужно знать о языке awk:
- Язык остается хорошо известным среди систем UNIX и аналогичных но — только для выполнения подобных задач, В настоящее время чаще пользуются языком Perl. Однако, кривая обучения для языка awk гораздо круче (это значит, что вы за очень короткое время выучите больше). Иными словами, Perl труднее в изучении
- За обоими языками Perl и awk закрепилась репутация непонятных даже для тех авторов программ, которые им практически пользуются. Поэтому в качестве документации используйте код!
Упражнения
Ниже приведено несколько практических примеров, в которых язык awk может оказаться полезным.
- Для первого упражнения вашими входными данными будут строки следующего вида:
Username:Firstname:Lastname:Telephone number
Сделайте скрипт awk, который будет конвертировать такие строки в записи LDAP следующего формата:
dn: uid=Username, dc=example, dc=com cn: Firstname Lastname sn: Lastname telephoneNumber: Telephone number
Создайте файл, содержащий пару тестовых записей, и проверьте работу скрипта.
- Создайте скрипт Bash, использующий команду awk и стандартные
команды UNIX, который будет показывать трех пользователей, использующих
наибольший объем дискового пространства файловой системы
/home
(если у вас нет директория, хранящего в отдельном разделе домашние директории, создайте скрипт для директория "/"; он присутствует в любой системе UNIX). Сначала выполните команды в командной строке. Затем поместите их в скрипт. Скрипт должен формировать понятный для чтения результат (понятный, по мнению вашего начальника). Если все будет работать так, как надо, перенаправьте результат работы себе по электронной почте (например, используйте команду mail-s Disk space usage
<you@your_comp> <result
).Если запущен демон квот, то используйте эту информацию, если нет, то воспользуйтесь командой find.
- Создайте выходной поток в стиле XML из строк входного потока, использующих символ табуляции в качестве разделителя и имеющих следующий вид:
Вывод должен быть следующим:
Кроме того, если вы что-нибудь знаете об XML, напишите скрипты BEGIN и END, предназначенные для завершения создания этой таблицы. Или сделайте это в HTML.
Предыдущий раздел: | Оглавление | Следующий раздел: |
Переменные Gawk | Глава 7 |