Пример grep команды | |
Оригинальный автор (ы) | Кен Томпсон [1] [2] |
---|---|
Разработчики) | AT&T Bell Laboratories |
изначальный выпуск | Ноябрь 1974 г . [1] |
Операционная система | Unix , Unix-подобный , Plan 9 , Inferno , OS-9 , MSX-DOS , IBM i |
Платформа | Кроссплатформенность |
Тип | Команда |
grep
- это служебная программа командной строки для поиска в наборах данных в виде простого текста строк, соответствующих регулярному выражению . Его название происходит от ред команды г / повторного / р ( г lobally поиска для г Регулярных й Xpression и р Ринта согласующих линий ), которая имеет тот же самый эффект. [3] [4] grep
был первоначально разработан для операционной системы Unix , но позже стал доступен для всех Unix-подобных систем и некоторых других, таких как OS-9 . [5]
История [ править ]
До своего названия grep была частной утилитой, написанной Кеном Томпсоном для поиска файлов по определенным шаблонам. Дуг Макилрой , не подозревая о ее существовании, попросил Томпсона написать такую программу. Отвечая, что он подумает о такой утилите в одночасье, Томпсон фактически исправил ошибки и внес улучшения примерно в течение часа. На следующий день он представил программу Макилрою, который сказал, что это именно то, что он хотел. Рассказ Томпсона может объяснить мнение, что grep был написан в одночасье. [6]
Томпсон написал первую версию на языке ассемблера PDP-11, чтобы помочь Ли Э. МакМэхону проанализировать текст « Записок федералиста», чтобы определить авторство отдельных документов. [7] текстовый редактор редактора (также является автором Томпсоном) имел регулярное выражение поддержки , но не может быть использован в таком большом количестве текста, поэтому Томпсон взята этого кода в автономном инструмент. [1] Он выбрал это имя, потому что в ed команда g / re / p выводит все строки, соответствующие заданному шаблону. [8] [9] впервые был включен в версию 4 Unix . Заявив, что это "обычно цитируется как grep
Прототипом программное средство», McIlroy зачислено grep
с„безвозвратно ingraining“Томпсон инструменты философии в Unix. [10]
Пример использования [ править ]
В следующем примере демонстрируется вывод команды с 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
), однако их явное использование устарело, а функции этих вариантов включены в grep
качестве параметров командной строки -E
и -F
; поэтому использование переключателей является рекомендуемым методом использования. [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 , задать расширенное и fgrep команды также были перенесены на IBM я операционной системы. [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: Факты . Galactic Industrial Limited. ISBN 0-9519228-0-7.
- ^ VCF East 2019 - Брайан Керниган берет интервью у Кена Томпсона (видео). YouTube. 6 мая 2019. (35 минут)
- ↑ Computerphile, откуда появился 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.
- ^ Abou-Assaleh, Тони; Вэй Ай (март 2004 г.). Обзор инструментов Global Regular Expression Print (GREP) (Технический отчет). Университет Далхаузи.
- ^ Хьюм, Эндрю (1988). «Сказка о двух грепах». Программное обеспечение - практика и опыт . 18 (11): 1063. DOI : 10.1002 / spe.4380181105 . S2CID 6395770 .
- ^ Meurant, Gerard (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.
Внешние ссылки [ править ]
В Викибуке, как искать, есть страница по теме: grep |
- Официальный сайт GNU Grep
- Руководство по GNU Grep
- - Руководство программиста Plan 9 , том 1
- - Руководство по общим командам Inferno
- «почему GNU grep работает быстро» - подробности реализации от автора GNU grep.
- Network grep - анализатор пакетов, используемый для сопоставления шаблонов на сетевом уровне
- Command Grep - 25 практических примеров