Брайан Керниган - UNIX — универсальная среда программирования

Тут можно читать онлайн Брайан Керниган - UNIX — универсальная среда программирования - бесплатно ознакомительный отрывок. Жанр: comp-osnet, издательство Финансы и статистика, год 1992. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    UNIX — универсальная среда программирования
  • Автор:
  • Жанр:
  • Издательство:
    Финансы и статистика
  • Год:
    1992
  • Город:
    Москва
  • ISBN:
    5-289-00253-4
  • Рейтинг:
    5/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Брайан Керниган - UNIX — универсальная среда программирования краткое содержание

UNIX — универсальная среда программирования - описание и краткое содержание, автор Брайан Керниган, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями shell.

Для программистов-пользователей операционной системы UNIX.

UNIX — универсальная среда программирования - читать онлайн бесплатно ознакомительный отрывок

UNIX — универсальная среда программирования - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Брайан Керниган
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

4.1 Семейство программ grep

В гл. 1 мы кратко упомянули о команде grep, а затем использовали ее в примерах. Конструкция

$ grep шаблон имена_файлов

проводит поиск в поименованных файлах или в стандартном входном потоке и выводит на печать каждую строку, в которую входит шаблон. Команда grepнеоценима для поиска переменных в программах и слов в документах, а также для выбора части выходного потока программы:

$ grep -n variable *.[гл] Поиск variable в тексте на Си

$ grep From $MAIL Печать заголовков сообщений из почтовой

посылки

$ grep From $MAIL | grep -v mary Заголовки, которые получены не от

адресата mary

$ grep -y mary $HOME/lib/phone-bookПоиск номера mary

$ who | grep mary Выяснить, работает ли mary в системе

$ ls | grep -v temp Имена файлов, не содержащих temp

Флаг -nинициирует вывод номеров строк, флаг -vменяет на противоположное значение условия, а флаг -yдопускает сопоставление строчных букв из шаблона с прописными буквами из файла (но прописные буквы все-таки могут сопоставляться только с прописными).

Во всех рассматривавшихся до сих пор примерах проводился поиск обычных строк из букв и чисел. Но команда grepможет искать и более сложные шаблоны: она интерпретирует выражения согласно простому языку для описания строк. С технической точки зрения шаблон представляет в некоторой степени ограниченную форму спецификаций строк, называемую регулярным выражением. Команда интерпретирует такие же регулярные выражения, как и редактор ed. На самом деле, эта команда была создана (за один вечер) прямым редактированием ed.

Регулярные выражения характеризуются тем, что ряду символов, таким, как *и т.п., приписывается специальное значение, используемое интерпретатором. Есть еще несколько метасимволов, но, к сожалению, с различными значениями. В табл. 4.1 показаны все метасимволы регулярных выражений, и мы кратко их здесь рассмотрим.

с Любой неспециальный символ c соответствует самому себе
\c Указание убрать любое специальное значение символа c
^ Начало строки
$ Конец строки
. Любой одиночный символ
[...] Любой символ из ...;допустимы диапазоны типа a-z
[^...] Любой символ не из ...; допустимы диапазоны
\n Строка, соответствующая n-му выражению \(...\)(только для grep)
r* Нуль или более вхождений r
r+ Одно или более вхождений r(только для egrep)
r? Нуль или одно вхождение r(только для egrep)
r1r2 За r1следует r2
r1|r2 r1или r2(только для egrep)
\(r\) Помеченное регулярное выражение r(только для grep); может быть вложенным
(r) Регулярное выражение r(только дляgrep); может быть вложенным
Никакое регулярное выражение не соответствует концу строки

Таблица 4.1: Регулярные выражения grepи egrep(в порядке убывания приоритета)

Метасимволы ^и $привязывают шаблон к началу ( ^) или концу ( $) строки. Например,

$ grep From $MAIL

ищет строки, содержащие Fromв вашей почтовой посылке, но

$ grep '^From' $MAIL

выдает строки, начинающиеся с From, которые, вероятнее всего, будут заглавными строками сообщений. Метасимволы регулярных выражений пересекаются с метасимволами интерпретатора, поэтому всегда имеет смысл заключать шаблоны команды grepв апострофы.

Команда grepдопускает классы символов, подобные тем, что используются интерпретатором: так, [a-z]задает любую строчную букву. Но есть и различия — если класс символов команды grepначинается с символа слабого ударения то шаблон задает любой символ, кроме входящих в данный класс. Значит, [^0-9]задает любой символ, кроме цифры. Как и в интерпретаторе, обратная дробная черта экранирует символы ]и -в классе символов, но команды grepи edтребуют, чтобы эти символы использовались там, где их значение недвусмысленно. Например, шаблон [][-]задает открывающую или закрывающую квадратную скобку либо знак минус.

Точка '.'эквивалентна '?'в интерпретаторе: она задает любой символ. (Точка, по всей видимости, есть символ, назначение которого различно для разных программ.) Ниже приводятся два примера:

$ ls -l | grep '^d' Список имен вложенных каталогов

$ ls -l | grep '^.......rw'Список файлов, доступных всем для чтения и записи

Символ '^'и семь точек задают любые семь символов в начале строки; в случае применения к выходному потоку команды ls -lзадается любая строка права доступа.

Операция "повторитель" ( '*') применима в выражении к предваряющему ее символу или метасимволу (включая класс символов), и вместе они обозначают любое число вхождений символа или метасимвола. Например, x*задает последовательность букв xпроизвольной длины, [a-zA-Z]*— любую строку букв, .*— все до конца строки, а .*x— все до последнего символа xв строке включительно. Необходимо отметить несколько важных моментов, связанных с повторителем. Во-первых, повторитель действует только на один символ, поэтому xy*соответствует x, за которым идут yy..., но не последовательности типа xyxyxy. Во-вторых, любое число включает нуль, поэтому если вы хотите, чтобы символ присутствовал, в шаблоне его нужно повторить. Например, правильным выражением, задающим строку букв, является такое: [a-zA-Z][a-zA-Z]*(буква, за которой следует нуль или более букв). Регулярное выражение .*соответствует — *, т.е. метасимволу интерпретатора, используемому для имен файлов.

Ни одно регулярное выражение команды grepне соответствует символу перевода строки; выражения сопоставляются с каждой строкой в отдельности. Регулярные выражения делают команду grepпростым языком программирования. Вспомните, что второе поле файла паролей содержит зашифрованный пароль. Приведенная ниже команда проводит поиск пользователей, не имеющих пароля:

$ grep '^[^:]*::' /etc/passwd

Шаблон расшифровывается так: начало строки, любое число символов, отличных от двоеточия, два двоеточия.

Команда grep— старейшая в семействе программ, к которому относятся команды fgrepи egrep. В основном их действие одинаково, но fgrepможет одновременно искать несколько литеральных строк, тогда как egrepинтерпретирует настоящие регулярные выражения, подобно grep, но с использованием операций "or" и скобок для группировки выражений, что будет объяснено ниже.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Брайан Керниган читать все книги автора по порядку

Брайан Керниган - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




UNIX — универсальная среда программирования отзывы


Отзывы читателей о книге UNIX — универсальная среда программирования, автор: Брайан Керниган. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x