Grep - Grep
Пример grep команда | |
Оригинальный автор (ы) | Кен Томпсон[1][2] |
---|---|
Разработчики) | AT&T Bell Laboratories |
изначальный выпуск | Ноябрь 1974 г.[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] Сравнить с гугл.
Смотрите также
- Алгоритм поиска строки Бойера – Мура
- соглашаться, примерная команда сопоставления строк
- найти (Windows), команда DOS и Windows, которая выполняет поиск текста, похожий на простой
grep
- найти (Unix), команда Unix, которая находит файлы по атрибуту, очень отличному от
grep
- Список команд Unix
- vgrep, или "визуальный
grep
"
использованная литература
- ^ а б c Керниган, Брайан (1984). Среда программирования Unix. Прентис Холл. стр.102. ISBN 0-13-937681-X.
- ^ "Grep был моей частной командой долгое время, прежде чем я сделал ее общедоступной". -Кен Томпсон В архиве 2015-05-26 в Wayback Machine, Автор Бенджамин Руалтанзаува, Опубликовано 5 февраля 2014 г., Средний
- ^ Hauben et al. 1997, гл. 9
- ^ Раймонд, Эрик. "grep". Файл жаргона. Архивировано из оригинал на 2006-06-17. Получено 2006-06-29.
- ^ Пол С. Даян (1992). Гуру OS-9 - 1: Факты. Galactic Industrial Limited. ISBN 0-9519228-0-7.
- ^ VCF East 2019 - Брайан Керниган берет интервью у Кена Томпсона (видео). YouTube. 6 мая 2019. (35 минут)
- ^ Компьютерил, Откуда появился GREP, интервью с Брайан Керниган
- ^ "регулярные выражения". 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. Дои: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. Получено 2010-12-10.
QGREP.EXE [:] Инструмент, похожий на grep в UNIX, этот инструмент может использоваться для поиска текстовой строки
- ^ Руководство пользователя MSX-DOS2 Tools от ASCII Corporation
- ^ IBM. "Qshell для программирования IBM System i версии 7.2" (PDF). Получено 2020-09-05.
- ^ «Обзор: Adobe InDesign CS3 - CreativePro.com». creativepro.com. 20 апреля 2007 г. В архиве из оригинала 5 января 2018 г.. Получено 24 апреля 2018.
- ^ «Справка InDesign: найти / изменить». В архиве из оригинала на 28.08.2016. Получено 2016-08-12.
- ^ «Архивная копия». В архиве из оригинала на 24.09.2017. Получено 2018-01-05.CS1 maint: заархивированная копия как заголовок (ссылка на сайт)
- ^ «Справка InDesign: стили GREP». В архиве из оригинала от 28.08.2016. Получено 2016-08-12.
- ^ С. Ли Генри (июнь 1998 г.). «Правильный поиск». Солнце Эксперт. С. 35–26.
- ^ Файл жаргона, статья «Документация»
- Заметки
- Ален Маглуар (август 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.
внешние ссылки
- Официальный сайт GNU Grep
- Руководство по GNU Grep
- План 9 Руководство программиста, том 1 –
- Inferno Общие команды Руководство по эксплуатации –
- "почему GNU grep работает быстро" - детали реализации от автора GNU grep.
- Сеть grep - Анализатор пакетов, используемый для сопоставления шаблонов на сетевом уровне
- Command Grep - 25 практических примеров