Grep - Grep

grep
Пример команды grep
Пример grep команда
Оригинальный автор (ы)Кен Томпсон[1][2]
Разработчики)AT&T Bell Laboratories
изначальный выпускНоябрь 1974 г.; 46 лет назад (1974-11)[1]
ПлатформаUnix, Unix-подобный, План 9, Inferno, ОС-9, MSX-DOS, IBM i
ТипКоманда

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

История

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

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

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

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

$ корень grep / etc / passwdкорень: x: 0: 0: корень: / корень: / bin / bashоператор: x: 11: 0: оператор: / корень: / sbin / nologin$ grep -n корень / etc / passwd1: корень: x: 0: 0: корень: / корень: / bin / bash12: оператор: x: 11: 0: оператор: / корень: / sbin / nologin$ grep -c ложный / etc / passwd7

Реализации

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

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

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

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

Порты из grep (в пределах Cygwin и GnuWin32, например) также работают под Майкрософт Виндоус. Некоторые версии Windows имеют похожие qgrep или findstr команда.[19]

А grep команда также является частью ASCII с Инструменты MSX-DOS2 для 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]

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

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

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

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

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

В декабре 2003 г. Оксфордский словарь английского языка онлайн добавлены черновые записи для "grep" как существительного и глагола.

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

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

использованная литература

  1. ^ а б c Керниган, Брайан (1984). Среда программирования Unix. Прентис Холл. стр.102. ISBN  0-13-937681-X.
  2. ^ "Grep был моей частной командой долгое время, прежде чем я сделал ее общедоступной". -Кен Томпсон В архиве 2015-05-26 в Wayback Machine, Автор Бенджамин Руалтанзаува, Опубликовано 5 февраля 2014 г., Средний
  3. ^ Hauben et al. 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. (35 минут)
  7. ^ Компьютерил, Откуда появился 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. ^ Абу-Ассалех, Тони; Вэй Ай (март 2004 г.). Обзор инструментов Global Regular Expression Print (GREP) (Технический отчет). Университет Далхаузи.
  12. ^ Хьюм, Эндрю (1988). «Сказка о двух грепах». Программное обеспечение - практика и опыт. 18 (11): 1063. Дои:10.1002 / spe.4380181105. S2CID  6395770.
  13. ^ Меурант, Жерар (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. Получено 2010-12-10. QGREP.EXE [:] Инструмент, похожий на grep в UNIX, этот инструмент может использоваться для поиска текстовой строки
  20. ^ Руководство пользователя MSX-DOS2 Tools от ASCII Corporation
  21. ^ IBM. "Qshell для программирования IBM System i версии 7.2" (PDF). Получено 2020-09-05.
  22. ^ «Обзор: Adobe InDesign CS3 - CreativePro.com». creativepro.com. 20 апреля 2007 г. В архиве из оригинала 5 января 2018 г.. Получено 24 апреля 2018.
  23. ^ «Справка InDesign: найти / изменить». В архиве из оригинала на 28.08.2016. Получено 2016-08-12.
  24. ^ «Архивная копия». В архиве из оригинала на 24.09.2017. Получено 2018-01-05.CS1 maint: заархивированная копия как заголовок (ссылка на сайт)
  25. ^ «Справка InDesign: стили GREP». В архиве из оригинала от 28.08.2016. Получено 2016-08-12.
  26. ^ С. Ли Генри (июнь 1998 г.). «Правильный поиск». Солнце Эксперт. С. 35–26.
  27. ^ Файл жаргона, статья «Документация»
Заметки
  • Ален Маглуар (август 2000 г.). Grep: поиск шаблона. Iuniverse Inc. ISBN  0-595-10039-2.
  • Хьюм, Эндрю Grep wars: инициатива стратегического поиска. Питер Коллинсон, редактор, Материалы конференции EUUG Spring 88, страницы 237–245, Бантингфорд, Великобритания, 1988. Европейская группа пользователей UNIX.
  • Майкл Хаубен; и другие. (Апрель 1997 г.). Пользователи сети: об истории и влиянии Usenet и Интернета (перспективы). Пресса компьютерного общества Wiley-IEEE. ISBN  978-0-8186-7706-9.

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