stringtranslate.com

грэп

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

История

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

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

Реализации

Различные grepреализации доступны во многих операционных системах и средах разработки программного обеспечения. [11] Ранние варианты включали egrepи fgrep, представленные в версии 7 Unix . [10] Вариант " egrep" поддерживает расширенный синтаксис регулярных выражений , добавленный Альфредом Ахо после оригинальной реализации регулярных выражений Кена Томпсона . [12] Вариант " fgrep" ищет любую из списка фиксированных строк, используя алгоритм сопоставления строк Ахо–Корасика . [13] Двоичные файлы этих вариантов существуют в современных системах, обычно ссылаясь на grepgrep или вызывая его как скрипт оболочки с соответствующим добавленным флагом, например exec grep -E "$@". egrepи fgrep, хотя они обычно развертываются в системах POSIX, до такой степени, что спецификация POSIX упоминает их широкое распространение, на самом деле не являются частью POSIX. [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 MSX -DOS2 Tools для MSX-DOS версии 2. [20]

Команды grep , egrep и fgrep также были перенесены в операционную систему IBM i . [21]

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

агреп

grep (приблизительный grep ) соответствует даже тогда, когда текст лишь приблизительно соответствует шаблону поиска. [26]

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

agrep -2 сетевые маски myfile

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

agrep -B сетевые маски myfile

Использование в качестве глагола

В декабре 2003 года Оксфордский словарь английского языка в Интернете добавил «grep» как существительное и как глагол. [27]

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

Смотрите также

Ссылки

  1. ^ abc Керниган, Брайан (1984). Среда программирования Unix . Prentice Hall. стр. 102. ISBN 0-13-937681-X.
  2. ^ «grep был моей личной командой довольно долгое время, прежде чем я сделал ее публичной». - Кен Томпсон Архивировано 26.05.2015 на Wayback Machine , Бенджамин Руалтанзаува, опубликовано 5 февраля 2014 г., Medium
  3. ^ Хаубен и др. 1997, Гл. 9
  4. ^ Рэймонд, Эрик . "grep". Файл жаргона . Архивировано из оригинала 2006-06-17 . Получено 2006-06-29 .
  5. ^ Пол С. Даян (1992). Гуру OS-9 - 1: Факты . Galactic Industrial Limited. ISBN 0-9519228-0-7.
  6. VCF East 2019 — Брайан Керниган берет интервью у Кена Томпсона (видео). YouTube. 6 мая 2019 г. Архивировано из оригинала 11 декабря 2021 г.(35 мин)
  7. ^ Computerphile, Откуда взялся GREP , интервью с Брайаном Керниганом
  8. ^ "ed regexes". perl.plover.com . Архивировано из оригинала 20 октября 2017 г. Получено 24 апреля 2018 г.
  9. ^ "Как Grep получил свое название". robots.thoughtbot.com . Архивировано из оригинала 9 августа 2017 года . Получено 24 апреля 2018 года .
  10. ^ ab McIlroy, MD (1987). Исследовательский ридер Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (Технический отчет). CSTR. Bell Labs. 139. Архивировано (PDF) из оригинала 2017-11-11.
  11. ^ Абу-Ассалех, Тони; Вэй Ай (март 2004 г.). Обзор инструментов глобальной печати регулярных выражений (GREP) (технический отчет). Университет Далхаузи.
  12. ^ Хьюм, Эндрю (1988). «История двух Greps». Программное обеспечение: практика и опыт . 18 (11): 1063. doi :10.1002/spe.4380181105. S2CID  6395770.
  13. ^ Мёрант, Жерар (12 сентября 1990 г.). Алгоритмы и сложность. Elsevier Science. стр. 278. ISBN 9780080933917. Архивировано из оригинала 4 марта 2016 . Получено 12 декабря 2015 .
  14. ^ "grep". www.pubs.opengroup.org . The Open Group. Архивировано из оригинала 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 man page". www.pcre.org . Кембриджский университет. Архивировано из оригинала 23 декабря 2015 г. Получено 12 декабря 2015 г.
  18. ^ "grep(1)". www.linux.die.net . Архивировано из оригинала 10 декабря 2015 г. Получено 12 декабря 2015 г.
  19. ^ Spalding, George (2000). Администрирование Windows 2000. Библиотека сетевых специалистов. Osborne/McGraw-Hill. С. 634. ISBN 978-0-07-882582-8. Получено 10.12.2010 . QGREP.EXE[:] Похожий на grep в UNIX инструмент, этот инструмент можно использовать для поиска текстовой строки
  20. ^ «Руководство пользователя инструментов MSX-DOS2 от ASCII Corporation». Апрель 1993 г.
  21. ^ IBM . "IBM System i Version 7.2 Programming Qshell" (PDF) . IBM . Получено 2020-09-05 .
  22. ^ "Обзор: Adobe InDesign CS3 - CreativePro.com". creativepro.com . 20 апреля 2007 г. Архивировано из оригинала 5 января 2018 г. Получено 24 апреля 2018 г.
  23. ^ "Справка InDesign: найти/изменить". Архивировано из оригинала 28-08-2016 . Получено 12-08-2016 .
  24. ^ "InDesign: стили GREP (1) Установка текста в скобках курсивом". Архивировано из оригинала 2017-09-24 . Получено 2018-01-05 .
  25. ^ "Справка InDesign: стили GREP". Архивировано из оригинала 28-08-2016 . Получено 12-08-2016 .
  26. С. Ли Генри (июнь 1998 г.). «Правильный поиск». Sun Expert . стр. 35–26.
  27. ^ "Список новых слов, декабрь 2003". Оксфордский словарь английского языка . Получено 2021-12-06 .
  28. ^ Файл жаргона , статья "Документация"
Примечания

Внешние ссылки