Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

grep- это служебная программа командной строки для поиска в наборах данных в виде простого текста строк, соответствующих регулярному выражению . Его название происходит от ред команды г / повторного / р ( г lobally поиска для г Регулярных й Xpression и р Ринта согласующих линий ), которая имеет тот же самый эффект. [3] [4] grep был первоначально разработан для операционной системы Unix , но позже стал доступен для всех Unix-подобных систем и некоторых других, таких как OS-9 . [5]

История [ править ]

До своего названия grep была частной утилитой, написанной Кеном Томпсоном для поиска файлов по определенным шаблонам. Дуг Макилрой , не подозревая о ее существовании, попросил Томпсона написать такую ​​программу. Отвечая, что он подумает о такой утилите в одночасье, Томпсон фактически исправил ошибки и внес улучшения примерно в течение часа. На следующий день он представил программу Макилрою, который сказал, что это именно то, что он хотел. Рассказ Томпсона может объяснить мнение, что grep был написан в одночасье. [6]

Томпсон написал первую версию на языке ассемблера PDP-11, чтобы помочь Ли Э. МакМэхону проанализировать текст « Записок федералиста», чтобы определить авторство отдельных документов. [7] текстовый редактор редактора (также является автором Томпсоном) имел регулярное выражение поддержки , но не может быть использован в таком большом количестве текста, поэтому Томпсон взята этого кода в автономном инструмент. [1] Он выбрал это имя, потому что в ed команда g / re / p выводит все строки, соответствующие заданному шаблону. [8] [9] впервые был включен в версию 4 Unix . Заявив, что это "обычно цитируется как grepПрототипом программное средство», McIlroy зачислено grepс„безвозвратно ingraining“Томпсон инструменты философии в Unix. [10]

Пример использования [ править ]

В следующем примере демонстрируется вывод команды с grepразными аргументами.

$ grep root / etc / passwd root: x: 0: 0: root: / root: / bin / bash operator: x: 11: 0: operator: / root: / sbin / nologin$ grep -n root / etc / passwd 1: root: x: 0: 0: root: / root: / bin / bash 12: operator: x: 11: 0: operator: / root: / sbin / nologin$ grep -c ложь / etc / passwd 7

Реализации [ править ]

Разнообразные grepреализации доступны во многих операционных системах и средах разработки программного обеспечения. [11] Ранние варианты включали egrepи fgrep, введенный в версии 7 Unix . [10] Вариант " egrep" поддерживает расширенный синтаксис регулярных выражений, добавленный Альфредом Ахо после первоначальной реализации регулярного выражения Кена Томпсона . [12] Вариант " fgrep" ищет любую из списка фиксированных строк, используя алгоритм сопоставления строк Ахо – Корасика . [13]Двоичные файлы этих вариантов сохраняются в большинстве современных систем (хотя обычно связаны с ними grep), однако их явное использование устарело, а функции этих вариантов включены в grepкачестве параметров командной строки -Eи -F; поэтому использование переключателей является рекомендуемым методом использования. [14]

Другие команды содержат слово «grep», чтобы указать, что они ищут (обычно для совпадения регулярных выражений). pgrepУтилита, например, отображает процессы, имена которых соответствуют данному регулярному выражению. [15]

В языке программирования Perl grep - это имя встроенной функции, которая находит элементы в списке, удовлетворяющие определенному свойству. [16] Эта функция высшего порядка обычно называется filterили whereна других языках.

Команда pcregrepявляется реализацией того, grepчто использует синтаксис регулярных выражений Perl. [17] Аналогичные функции могут быть вызваны в версии GNU grepс -Pфлагом. [18]

Порты из grep(в Cygwin и gnuwin32 , например) также работает под Microsoft Windows . В некоторых версиях Windows есть аналогичная команда qgrepили findstr. [19]

grepКоманда также является частью ASCII «S MSX-DOS2 Инструменты для MSX-DOS версии 2. [20]

В GREP , задать расширенное и fgrep команды также были перенесены на IBM я операционной системы. [21]

Программное обеспечение Adobe InDesign имеет функции GREP (начиная с версии CS3 (2007) [22] ) в диалоговом окне поиска / изменения [23], вкладка «GREP», и представленные в InDesign CS4 [24] в стилях абзацев [25] «GREP стили ".

соглашение [ править ]

Grep (приблизительная Grep) соответствуетдаже если текст только приблизительно соответствует шаблону поиска. [26]

Этот следующий вызов находит маски сети в файле myfile , а также любое другое слово, которое может быть получено из него, при условии не более двух замен.

согласовать -2 маски сети myfile

В этом примере создается список совпадений с наиболее близкими, то есть с наименьшим количеством замен, перечисленных первыми. Командный флаг B означает лучшее :

соглашениеp -B netmasks myfile

Использование как глагол [ править ]

В декабре 2003 года в Oxford English Dictionary Online были добавлены черновые статьи для «grep» как существительного и глагола.

Распространенным использованием глагола является фраза «Вы не можете найти мертвые деревья» - это означает, что можно легче искать на цифровых носителях, используя такие инструменты, как grep, чем можно было бы с бумажной копией (т. Е. Сделанной из мертвых деревьев, бумаги) . [27] Сравните с Google .

См. Также [ править ]

  • Алгоритм поиска строки Бойера – Мура
  • соглашениеp , примерная команда сопоставления строк
  • find (Windows) , команда DOS и Windows, которая выполняет поиск текста, аналогично простомуgrep
  • find (Unix) , команда Unix, которая находит файлы по атрибуту, сильно отличающемуся отgrep
  • Список команд Unix
  • vgrep , или "визуальный grep"

Ссылки [ править ]

  1. ^ a b c Керниган, Брайан (1984). Среда программирования Unix . Прентис Холл. С.  102 . ISBN 0-13-937681-X.
  2. ^ «Grep было моей частной командой долгое время, прежде чем я сделал ее общедоступной». -Кен Томпсон, Архивировано 26 мая 2015 г. в Wayback Machine , Бенджамин Руалтханзаува, опубликовано 5 февраля 2014 г., средний
  3. ^ Hauben et al. 1997, гл. 9
  4. ^ Раймонд, Эрик . "grep" . Файл жаргона . Архивировано из оригинала на 2006-06-17 . Проверено 29 июня 2006 .
  5. ^ Пол С. Даян (1992). Гуру OS-9 - 1: Факты . Galactic Industrial Limited. ISBN 0-9519228-0-7.
  6. ^ VCF East 2019 - Брайан Керниган берет интервью у Кена Томпсона (видео). YouTube. 6 мая 2019. (35 минут)
  7. Computerphile, откуда появился GREP , интервью с Брайаном Керниганом.
  8. ^ "регулярные выражения" . perl.plover.com . Архивировано из оригинального 20 октября 2017 года . Проверено 24 апреля 2018 года .
  9. ^ "Как Grep получил свое имя" . robots.oughttbot.com . Архивировано из оригинала 9 августа 2017 года . Проверено 24 апреля 2018 года .
  10. ^ а б Макилрой, доктор медицины (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (технический отчет). CSTR. Bell Labs. 139. Архивировано (PDF) из оригинала 11.11.2017.
  11. ^ Abou-Assaleh, Тони; Вэй Ай (март 2004 г.). Обзор инструментов Global Regular Expression Print (GREP) (Технический отчет). Университет Далхаузи.
  12. ^ Хьюм, Эндрю (1988). «Сказка о двух грепах». Программное обеспечение - практика и опыт . 18 (11): 1063. DOI : 10.1002 / spe.4380181105 . S2CID 6395770 . 
  13. ^ Meurant, Gerard (12 сентября 1990). Алгоритмы и сложность . Elsevier Science. п. 278. ISBN 9780080933917. Архивировано 4 марта 2016 года . Проверено 12 декабря 2015 .
  14. ^ "grep" . www.pubs.opengroup.org . Открытая группа. Архивировано 28 ноября 2015 года . Проверено 12 декабря 2015 .
  15. ^ "pgrep (1)" . www.linux.die.net . Архивировано 22 декабря 2015 года . Проверено 12 декабря 2015 .
  16. ^ "grep" . www.perldoc.perl.org . Архивировано 7 декабря 2015 года . Проверено 12 декабря 2015 .
  17. ^ "Справочная страница pcregrep" . www.pcre.org . Кембриджский университет. Архивировано 23 декабря 2015 года . Проверено 12 декабря 2015 .
  18. ^ "grep (1)" . www.linux.die.net . Архивировано 10 декабря 2015 года . Проверено 12 декабря 2015 .
  19. ^ Сполдинг, Джордж (2000). Администрирование Windows 2000 . Сетевая профессиональная библиотека. Осборн / Макгроу-Хилл. С.  634 . ISBN 978-0-07-882582-8. Проверено 10 декабря 2010 . QGREP.EXE [:] Инструмент, похожий на grep в UNIX, этот инструмент может использоваться для поиска текстовой строки
  20. ^ Руководство пользователя MSX-DOS2 Tools от ASCII Corporation
  21. ^ IBM . «Qshell для программирования IBM System i версии 7.2» (PDF) . Проверено 5 сентября 2020 .
  22. ^ «Обзор: Adobe InDesign CS3 - CreativePro.com» . creativepro.com . 20 апреля 2007 года. Архивировано 5 января 2018 года . Проверено 24 апреля 2018 года .
  23. ^ «Справка InDesign: найти / изменить» . Архивировано 28 августа 2016 года . Проверено 12 августа 2016 .
  24. ^ "Архивная копия" . Архивировано 24 сентября 2017 года . Проверено 5 января 2018 .CS1 maint: заархивированная копия как заголовок ( ссылка )
  25. ^ «Справка InDesign: стили GREP» . Архивировано 28 августа 2016 года . Проверено 12 августа 2016 .
  26. С. Ли Генри (июнь 1998 г.). «Правильный поиск». Sun Expert . С. 35–26.
  27. ^ Файл жаргона , статья "Документация"
Примечания
  • Ален Маглуар (август 2000 г.). Grep: поиск шаблона . ISBN Iuniverse Inc. 0-595-10039-2.
  • Хьюм, Эндрю Греп войны: инициатива стратегического поиска. В Питере Коллинсоне, редакторе, Труды конференции EUUG Spring 88 , страницы 237–245, Бантингфорд, Великобритания, 1988. Европейская группа пользователей UNIX.
  • Майкл Хаубен ; и другие. (Апрель 1997 г.). Пользователи сети: об истории и влиянии Usenet и Интернета (перспективы) . Пресса компьютерного общества Wiley-IEEE. ISBN 978-0-8186-7706-9.

Внешние ссылки [ править ]

  • Официальный сайт GNU Grep
  • Руководство по GNU Grep
  • grep(1) -  Руководство программиста Plan 9 , том 1
  • grep(1) -  Руководство по общим командам Inferno
  • «почему GNU grep работает быстро» - подробности реализации от автора GNU grep.
  • Network grep - анализатор пакетов, используемый для сопоставления шаблонов на сетевом уровне
  • Command Grep - 25 практических примеров