Предположим, я выполняю сценарий comet, обрабатывающий файл month_end.txt, и в случае неудачного завершения сценария хочу прекратить работу интерпретатора shell. Простейший способ сделать это состоит в следующем:
$ comet month_end.txt || exit
Но можно также перед выходом из интерпретатора послать отвечающему за этот сценарий пользователю электронное сообщение:
$ comet month_end.txt || (echo "Привет! Твой сценарий не работает." | \
mail dave; exit)
Символ '\' в конце первой строки означает, что команда будет продолжена в следующей строке.
Вспомним рассмотренный ранее пример, в котором команда sort сортирует содержимое текстового файла quarter_end.txt, записывая результат в файл quarter.sorted с последующим выводом его на печать:
$ sort quarter_end.txt > quarter.sorted && lp quarter.sorted
Применив метод группировки команд, можно одновременно с печатью файла скопировать его в каталог /logs.
$ sort quarter_end.txt > quarter.sorted && \
(cp quarter.sorted /logs/quarter.sorted; lp quarter.sorted)
6.4. Заключение
При создании сложных инструкций большую роль играют операторы && и. Они позволяют выполнить указанную после них команду или группу команд только в том случае, если была (или не была) успешно выполнена предыдущая команда или группа команд.
ЧАСТЬ 2
Фильтрация текста
Регулярные выражения
При работе в UNIX или Linux часто используются регулярные выражения — мощное средство текстового поиска. Если, например, требуется найти слово, у которого первые два символа являются прописными буквами, а следующие четыре символа — цифрами, сформировать правильный шаблон поиска помогут регулярные выражения.
В этой главе рассматриваются следующие темы:
• создание шаблонов для поиска выражений, стоящих в начале или в конце строки;
• создание шаблонов для поиска символов, встречающихся неопределенное число раз;
• создание шаблонов для поиска специальных символов;
• создание шаблонов для поиска символов из указанного набора или диапазона;
• создание шаблонов для поиска символов, встречающихся указанное число раз подряд.
Регулярные выражения можно применять для фильтрации текстовых файлов или выходных данных команды либо сценария. Они представляют собой набор шаблонов, состоящих как из специальных, так и обычных символов.
Регулярные выражения в той или иной форме используются всеми основными текстовыми редакторами и утилитами, выполняющими фильтрацию текста. К сожалению, наборы поддерживаемых выражений несколько различаются от программы к программе, но существуют так называемые базовые регулярные выражения, которые во всех программах обрабатываются одинаково. Именно их мы и рассмотрим в настоящей главе. Единственное исключение -oператор \{ \}, который поддерживается в программах sed и grep, но не в awk.
В табл. 7.1 перечислены метасимволы и операторы, применяемые в базовых регулярных выражениях.
Таблица 7.1. Метасимволы и операторы базовых регулярных выражений