stringtranslate.com

grep

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

История

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

Томпсон написал первую версию на языке ассемблера PDP-11 , чтобы помочь Ли Э. МакМэхону проанализировать текст « Записок федералиста» и определить авторство отдельных статей. [7] Текстовый редактор ed (также автор Томпсон) имел поддержку регулярных выражений , но его нельзя было использовать для поиска в таком большом объеме текста, поскольку он загружал весь файл в память, чтобы обеспечить редактирование с произвольным доступом , поэтому Томпсон выделил следующее код регулярного выражения в отдельный инструмент, который вместо этого будет обрабатывать файлы произвольной длины последовательно, не буферизуя слишком много в памяти. [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также является частью инструментов MSX-DOS2 ASCII для 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 сетевые маски мой файл

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

agrep -B маскирует мой файл

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

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

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

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

Рекомендации

  1. ^ abc Керниган, Брайан (1984). Среда программирования Unix . Прентис Холл. стр. 102. ISBN 0-13-937681-Х.
  2. ^ «Долгое время команда grep была моей частной командой, прежде чем я обнародовал ее». -Кен Томпсон. Архивировано 26 мая 2015 г. в Wayback Machine , Бенджамин Руальтанзаува, опубликовано 5 февраля 2014 г., Medium.
  3. ^ Хаубен и др. 1997, гл. 9
  4. ^ Раймонд, Эрик . "греп". Файл жаргона . Архивировано из оригинала 17 июня 2006 г. Проверено 29 июня 2006 г.
  5. ^ Пол С. Даян (1992). OS-9 Guru-1: Факты . Галактика Индастриал Лимитед. ISBN 0-9519228-0-7.
  6. ^ VCF East 2019 - Брайан Керниган берет интервью у Кена Томпсона (видео). YouTube. 6 мая 2019 г. Архивировано из оригинала 11 декабря 2021 г.(35 минут)
  7. ^ Компьютерфил, Откуда взялся GREP , интервью с Брайаном Керниганом
  8. ^ "регулярные выражения Эда" . perl.plover.com . Архивировано из оригинала 20 октября 2017 года . Проверено 24 апреля 2018 г.
  9. ^ «Как Grep получил свое имя» . robots. Thoughtbot.com . Архивировано из оригинала 9 августа 2017 года . Проверено 24 апреля 2018 г.
  10. ^ Аб Макилрой, доктор медицины (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (Технический отчет). CSTR. Лаборатории Белла. 139. Архивировано (PDF) из оригинала 11 ноября 2017 г.
  11. ^ Абу-Ассале, Тони; Вэй Ай (март 2004 г.). Обзор инструментов глобальной печати регулярных выражений (GREP) (технический отчет). Университет Далхаузи.
  12. ^ Хьюм, Эндрю (1988). «Сказка о двух Грепах». Программное обеспечение: практика и опыт . 18 (11): 1063. дои :10.1002/спе.4380181105. S2CID  6395770.
  13. Меран, Жерар (12 сентября 1990 г.). Алгоритмы и сложность. Эльзевир Наука. п. 278. ИСБН 9780080933917. Архивировано из оригинала 4 марта 2016 года . Проверено 12 декабря 2015 г.
  14. ^ "Грэп". www.pubs.opengroup.org . Открытая группа. Архивировано из оригинала 28 ноября 2015 года . Проверено 12 декабря 2015 г.
  15. ^ "pgrep(1)". www.linux.die.net . Архивировано из оригинала 22 декабря 2015 года . Проверено 12 декабря 2015 г.
  16. ^ "Грэп". 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 от ASCII Corporation» . Апрель 1993 года.
  21. ^ IBM . «IBM System i Версия 7.2 Программирование Qshell» (PDF) . ИБМ . Проверено 05 сентября 2020 г.
  22. ^ «Обзор: Adobe InDesign CS3 — CreativePro.com» . Creativepro.com . 20 апреля 2007 г. Архивировано из оригинала 5 января 2018 г. . Проверено 24 апреля 2018 г.
  23. ^ «Справка InDesign: найти/изменить» . Архивировано из оригинала 28 августа 2016 г. Проверено 12 августа 2016 г.
  24. ^ «InDesign: Стили GREP (1) Установка текста в круглых скобках курсивом» . Архивировано из оригинала 24 сентября 2017 г. Проверено 5 января 2018 г.
  25. ^ «Справка InDesign: стили GREP» . Архивировано из оригинала 28 августа 2016 г. Проверено 12 августа 2016 г.
  26. ^ С. Ли Генри (июнь 1998 г.). «Правильный поиск». Эксперт Солнца . стр. 35–26.
  27. ^ «Список новых слов, декабрь 2003 г.» . Оксфордский словарь английского языка . Проверено 6 декабря 2021 г.
  28. ^ Файл жаргона , статья «Документация»
Примечания

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