grep
— это утилита командной строки для поиска в текстовых наборах данных строк, соответствующих регулярному выражению . Ее название происходит от команды edg/re/p
(глобальный поиск и печать регулярных выражений), которая имеет тот же эффект. [3] [4] grep
изначально была разработана для операционной системы Unix , но позже стала доступна для всех Unix-подобных систем и некоторых других, таких как OS-9 . [5]
До того, как получить название, grep была частной утилитой, написанной Кеном Томпсоном для поиска файлов по определенным шаблонам. Дуг Макилрой , не зная о ее существовании, попросил Томпсона написать такую программу. Ответив, что он подумает о такой утилите за ночь, Томпсон фактически исправил ошибки и внес улучшения в течение часа в свою собственную программу под названием s
(сокращение от «search»). На следующий день он представил программу Макилрою, который сказал, что это именно то, что он хотел. Рассказ Томпсона может объяснить убеждение, что grep был написан за ночь. [6]
Томпсон написал первую версию на языке ассемблера PDP-11 , чтобы помочь Ли Э. Макмэну проанализировать текст The Federalist Papers для определения авторства отдельных статей. [7] Текстовый редактор ed ( также созданный Томпсоном) поддерживал регулярные выражения , но не мог использоваться для поиска по такому большому объему текста, поскольку загружал весь файл в память, чтобы обеспечить возможность редактирования с произвольным доступом , поэтому Томпсон выделил этот код regexp в отдельный инструмент, который вместо этого последовательно обрабатывал файлы произвольной длины, не буферизуя слишком много в памяти. [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
также является частью ASCII MSX -DOS2 Tools для 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 сетевые маски myfile
Этот пример генерирует список совпадений, в котором самые близкие, то есть те, у которых меньше всего замен, перечислены первыми. Флаг команды B означает лучший :
agrep -B сетевые маски myfile
В декабре 2003 года Оксфордский словарь английского языка в Интернете добавил «grep» как существительное и как глагол. [27]
Распространенным глагольным употреблением является фраза «Вы не можете выполнить grep мертвых деревьев» — это означает, что с помощью таких инструментов, как , можно легче осуществлять поиск по цифровым носителям, чем grep
с помощью печатной копии (т. е. сделанной из «мертвых деревьев», что в данном контексте является дисфемизмом для бумаги). [28]
grep
grep
grep
"QGREP.EXE[:] Похожий на grep в UNIX инструмент, этот инструмент можно использовать для поиска текстовой строки