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] grep
grep
grep
Во многих операционных системах и средах разработки программного обеспечения доступны различные реализации. [11] Ранние варианты включали egrep
и fgrep
, представленные в версии 7 Unix . [10] Вариант " egrep
" поддерживает расширенный синтаксис регулярных выражений , добавленный Альфредом Ахо после оригинальной реализации регулярных выражений Кена Томпсона . [12] Вариант " fgrep
" ищет любую из списка фиксированных строк с использованием алгоритма сопоставления строк Ахо-Корасика . [13] Двоичные файлы этих вариантов существуют в современных системах, обычно они связываются с grep
grep или вызывают его как сценарий оболочки с добавленным соответствующим флагом, например 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]
grep
grep
grep
»QGREP.EXE[:] Инструмент, аналогичный grep в UNIX. Этот инструмент можно использовать для поиска текстовой строки.