grep
- это служебная программа командной строки для поиска в наборах данных в виде обычного текста строк, соответствующих регулярному выражению . Его название происходит от ред команды г / повторного / р ( г lobally поиска для г Регулярных й Xpression и р Ринта согласующих линий ), которая имеет тот же самый эффект. [3] [4] grep
был первоначально разработан для операционной системы Unix , но позже стал доступен для всех Unix-подобных систем и некоторых других, таких как OS-9 . [5]
Автор (ы) оригинала | Кен Томпсон [1] [2] |
---|---|
Разработчики) | AT&T Bell Laboratories |
Первый выпуск | Ноябрь 1973 г . [1] |
Операционная система | Unix , Unix-подобный , Plan 9 , Inferno , OS-9 , MSX-DOS , IBM i |
Платформа | Кроссплатформенность |
Тип | Командование |
История
До своего названия grep была частной утилитой, написанной Кеном Томпсоном для поиска файлов по определенным шаблонам. Дуг Макилрой , не подозревая о ее существовании, попросил Томпсона написать такую программу. Отвечая, что он подумает о такой утилите в одночасье, Томпсон фактически исправил ошибки и внес улучшения примерно в течение часа. На следующий день он представил программу Макилрою, который сказал, что это именно то, что он хотел. Рассказ Томпсона может объяснить мнение о том, что grep был написан в одночасье. [6]
Томпсон написал первую версию на языке ассемблера PDP-11, чтобы помочь Ли Э. МакМахон проанализировать текст « Записок федералиста», чтобы определить авторство отдельных документов. [7] текстовый редактор редактора (также является автором Томпсоном) имел регулярное выражение поддержки , но не может быть использован в таком большом количестве текста, поэтому Томпсон взята этого кода в автономном инструмент. [1] Он выбрал имя, потому что в ed команда g / re / p печатала все строки, соответствующие заданному шаблону. [8] [9] впервые был включен в версию 4 Unix . Заявив , что он «обычно упоминается как в прототипе программного средства», McIlroy зачислена с «безвозвратно ingraining» Томпсона инструменты философии в Unix. [10] grep
grep
Пример использования
В следующем примере демонстрируется вывод команды с 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
; Однако, используя эти двоичные файлы устаревшего в пользу использования -E
и -F
переключателей командной строки grep
вместо. [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 , egrep и Команды fgrep также были перенесены в операционную систему IBM i . [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
" - Платиновый поисковик, более быстрый поиск
Рекомендации
- ^ a b c Керниган, Брайан (1984). Среда программирования Unix . Прентис Холл. С. 102 . ISBN 0-13-937681-X.
- ^ «Grep было моей частной командой долгое время, прежде чем я сделал ее общедоступной». -Кен Томпсон, Архивировано 26 мая 2015 г. в Wayback Machine , Бенджамин Руалтанзаува, опубликовано 5 февраля 2014 г., средний
- ^ Hauben et al. 1997, гл. 9
- ^ Раймонд, Эрик . "grep" . Файл жаргона . Архивировано из оригинала на 2006-06-17 . Проверено 29 июня 2006 .
- ^ Пол С. Даян (1992). Гуру OS-9 - 1: Факты . Галактик Индастриал Лимитед. ISBN 0-9519228-0-7.
- ^ VCF East 2019 - Брайан Керниган берет интервью у Кена Томпсона (видео). YouTube. 6 мая 2019. (35 минут)
- ↑ Computerphile, откуда появился GREP , интервью с Брайаном Керниганом
- ^ "ed regexes" . perl.plover.com . Архивировано из оригинального 20 октября 2017 года . Проверено 24 апреля 2018 года .
- ^ «Как Grep получил свое имя» . robots.oughttbot.com . Архивировано из оригинала 9 августа 2017 года . Проверено 24 апреля 2018 года .
- ^ а б Макилрой, доктор медицины (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (технический отчет). CSTR. Bell Labs. 139. Архивировано (PDF) из оригинала 11.11.2017.
- ^ Абу-Ассалех, Тони; Вэй Ай (март 2004 г.). Обзор инструментов Global Regular Expression Print (GREP) (Технический отчет). Университет Далхаузи.
- ^ Хьюм, Эндрю (1988). «Сказка о двух грепах». Программное обеспечение - практика и опыт . 18 (11): 1063. DOI : 10.1002 / spe.4380181105 . S2CID 6395770 .
- ^ Мерант, Жерар (12 сентября 1990 г.). Алгоритмы и сложность . Elsevier Science. п. 278. ISBN 9780080933917. Архивировано 4 марта 2016 года . Проверено 12 декабря 2015 года .
- ^ "grep" . www.pubs.opengroup.org . Открытая группа. Архивировано 28 ноября 2015 года . Проверено 12 декабря 2015 года .
- ^ "pgrep (1)" . www.linux.die.net . Архивировано 22 декабря 2015 года . Проверено 12 декабря 2015 года .
- ^ "grep" . www.perldoc.perl.org . Архивировано 7 декабря 2015 года . Проверено 12 декабря 2015 года .
- ^ "Справочная страница pcregrep" . www.pcre.org . Кембриджский университет. Архивировано 23 декабря 2015 года . Проверено 12 декабря 2015 года .
- ^ "grep (1)" . www.linux.die.net . Архивировано 10 декабря 2015 года . Проверено 12 декабря 2015 года .
- ^ Сполдинг, Джордж (2000). Администрирование Windows 2000 . Сетевая профессиональная библиотека. Осборн / Макгроу-Хилл. С. 634 . ISBN 978-0-07-882582-8. Проверено 10 декабря 2010 .
QGREP.EXE [:] Инструмент, похожий на grep в UNIX, этот инструмент можно использовать для поиска текстовой строки.
- ^ Руководство пользователя MSX-DOS2 Tools от ASCII Corporation
- ^ IBM . «Qshell для программирования IBM System i версии 7.2» (PDF) . Проверено 5 сентября 2020 .
- ^ «Обзор: Adobe InDesign CS3 - CreativePro.com» . creativepro.com . 20 апреля 2007 года архивации с оригинала на 5 января 2018 года . Проверено 24 апреля 2018 года .
- ^ «Справка InDesign: найти / изменить» . Архивировано 28 августа 2016 года . Проверено 12 августа 2016 .
- ^ «Архивная копия» . Архивировано 24 сентября 2017 года . Проверено 5 января 2018 .CS1 maint: заархивированная копия как заголовок ( ссылка )
- ^ «Справка InDesign: стили GREP» . Архивировано 28 августа 2016 года . Проверено 12 августа 2016 .
- ^ С. Ли Генри (июнь 1998 г.). «Правильный поиск». Sun Expert . С. 35–26.
- ^ Файл жаргона , статья "Документация"
- Заметки
- Ален Маглуар (август 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
- - Руководство программиста Plan 9 , том 1
- - Руководство по общим командам Inferno
- «почему GNU grep работает быстро» - подробности реализации от автора GNU grep.
- Network grep - анализатор пакетов, используемый для сопоставления шаблонов на сетевом уровне.
- Command Grep - 25 практических примеров