Базовые регулярные выражения
Многими стандартными утилитами (такими как «sed», «grep», «vi») для поиска, замены, выбора текста, используются базовые регулярные выражения.
Регулярное выражение – это последовательность символов. При использовании (передаче в качестве аргумента программе или вводе в ходе сеанса редактирования) регулярное выражение (шаблон) обычно60 окружается ограничителями – двумя одинаковыми символами, обозначающими его начало и конец, но не являющимися частью самого выражения. За исключением особых случаев в качестве ограничителей принято брать прямую косую черту (/, слэш), она окружает выражения и во всех нижеприведенных примерах.
Сами же символы могут (в зависимости от значения и, иногда, положения) иметь прямое (буквальное) значение или специальное. Символ-ограничитель не может употребляться внутри выражения в буквальном значении; также не рекомендуется использовать в этом качестве любой из перечисленных ниже специальных символов.
В буквальном значении символ автонимен, т.е. обозначает сам себя. /а/ обозначает букву «а», /слово/ означает слово «слово».
В синтаксисе базовых регулярных выражений определены следующие специальные символы.
Любой одиночный символ обозначается точкой (.), а не вопросительным знаком, как при «глоббинге» имен файлов.
Квадратные скобки ([ и ]) так же, как и при «глоббинге», используются для задания списков и диапазонов.
Знак каретки (^) имеет специальное значение в первой позиции внутри квадратных скобок. В этом случае он означает отрицание: /[А-Яа-я]/ соответствует «любой букве русского алфавита», а /[^А-Яа-я]/ – «любому символу, кроме букв русского алфавита». Чтобы включить его в список, достаточно поместить его в любую другую позицию: /[~`^]/ – это «тильда, апостроф или знак каретки».
Специальные значения, которые слишком сложны, чтобы их здесь рассматривать, в первой позиции внутри квадратных скобок имеют также: точка (.), знак равенства (=) и двоеточие (:).
Каретка в начале выражения означает начало строки: ^T найдет заглавное «Т», начинающее строку. Подобно этому знак доллара ($) в конце выражения означает конец строки.
Звездочка тоже используется в значении «нуля или более вхождений символа», но по-другому – для этого она должна следовать за таким символом. Шаблон /A*/ соответствует «A», «AA», «AAA» и т.д. Звездочка может следовать и за выражением, например, /[А-Яа-я]*/ означает «любую последовательность букв русского алфавита». Любая последовательность любых символов может быть обозначена /.*/.
Обратная косая черта (\, «бэкслэш») «экранирует» следующий за нею символ, то есть отменяет его специальное значение. /\./ означает точку, /\*/ – звездочку, а /\\/ – обратную косую черту. Обратная косая черта, за которой следует цифра, также имеет специальное значение, которое здесь не рассматривается.
Кроме того, регулярные выражения могут включать скобочные конструкции. В качестве скобок используются последовательности \( и \) (это совершенно нелогичное обратное (не отменяющее специальное значение следующего символа, а, наоборот, придающее ему специальное значение) значение бэкслэша обусловлено чисто историческими причинами: скобочные выражения вводились в синтаксис регулярных выражений, когда он уже устоялся). Например, шаблон /\(аб\)*/ соответствует строкам «аб», «абаб», «абабаб» и т.д. Скобочные конструкции могут быть вложенными.
1.10 Элементы программирования оболочки
В предыдущих главах мы рассматривали язык оболочки с точки зрения, в основном,
От универсального языка программирования ожидаются: средства описания структур данных (переменные), средства вычисления выражений и присвоения их значений переменным, средства организации последовательного, условного и циклического исполнения, средства декомпозиции программы на подпрограммы.
Все эти средства присутствуют в стандартном языке оболочки61. Его особенностью явяется возможность использовать команды (стандартные и нестандартные) ОС в качестве своего рода «вызовов функций» (хотя и определение, и вызов функции также присутствуют в языке как отдельный механизм).
При попытках реализовать «простые программы из учебников» на языке оболочки результат часто оказывается не самым изящным. Однако этот язык очень хорошо приспособлен для решения административных и системных задач. В большинстве открытых ОС значительная часть самой системы написана на этом языке.
Пределы главы позволяют лишь бегло представить механизмы языка оболочки, проиллюстрировав их несколькими примерами.
Комментарии и указание оболочки
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии