Застосування регулярних виразів для конкретного пошуку тексту. Програма GREP.Опис, опції, приклад

Регулярні вирази застосовуються в багатьох редакторах, таких як emacs, в програмах grep/egrep і мовах, таких як awk, perl і sed. Регулярні вирази використовуються для розширеного контекстного пошуку і модифікації тексту. Регулярний вираз — це формальний опис шаблону, який відповідає текстовому рядку. Хоча регулярні вирази дуже широко поширені в світі Linux/unix, але не існує такої штуки, як "стандартна мова регулярних виразів". Є декілька різних діалектів. Наприклад, два типи програми grep: grep і egrep. Обидві використовують регулярні вирази з можливостями, що трохи відрізняються. Perl, можливо, має повніший набір регулярних виразів. На щастя, всі вони слідують загальним принципам.

Команда grep, одна із самих відомих і потрібних команд Юніксовидних ОС, веде свій початок від першого текстового редактора Юникс - ed. В цьому редакторі була команда g/re/p (global/regular expression/print), яка і дала свою назву новій програмі.

Використовує недетермінований алгоритм. Если имя_файла не указано, grep предполагает поиск в стандартном входном потоке. Команда grep слугує для пошуку рядка, який містить задачний користувачем зразок. Якщо ім’я файлу не задати то пошук буде задіяний безпосередньо у комінді вводу. Може також обробляти велику кількість файлів записаних через пробіл.

Синтаксис

grep зразок имя_файлу.

/usr/bin/grep [ -bchilnsvw ] ограниченное_регулярное_выражение
[ имя_файла ... ]

/usr/xpg4/bin/grep [ -E | -F ] [ -c | -l | -q ] [ -bhinsvwx ]
-e список_образцов ... [ -f файл_образцов ] ...
[ имя_файла ... ]

Список зразків переважно беруть в однинарні лапки ‘ ’

Опції:

-e – програмі вказує на те,що зразок списку - це повний регулярний вираз.

-f – визначається як фіксовані рядки

Якщо жодна з даних опцій не вказана, інтерпретує елементи спуску – зразка як прості регулярні вирази

-b -Предваряет каждую строку номером блока, в котором она была найдена.

c Выдает только количество строк, содержащих образец.
h Предотвращает выдачу имени файла, содержащего сопоставившуюся строку, перед собственно строкой. Используется при поиске по нескольким файлам.
i Игнорирует регистр символов при сравнениях.
l Выдает только имена файлов, содержащих сопоставившиеся строки, по одному в строке. Если образец найден в нескольких строках файла, имя файла не повторяется.
n Выдает перед каждой строкой ее номер в файле (строки нумеруются с 1).
s Подавляет выдачу сообщений о не существующих или недоступных для чтения файлах.
v Выдает все строки, за исключением содержащих образец.

e список_образцовЗадает один или несколько образцов для поиска. Образцы в списке_образцов должны разделяться символами новой строки

f файл_образцовЧитает один или несколько образцов из файла с указанным полным именем файл_образцов. Образцы в файле_образцовзавершаются символом новой строки. Пустой образец можно задать с помощью пустой строки в файле_образцов. Если только вместе с этой опцией не указана опция -E или -F, каждый образец счиается простым регулярным выражением.

-FЗадает сопоставление с фиксированными строками. Каждый образец ищется как строка, а не как регулярное выражение. Если входная строка содержит любой из образцов в качестве подряд идущих байтов, такая строка считается соответствующей образцу.

-xСчитает сопоставившимися только строки, все символы которых использованы при сопоставлении с фиксированной строкой или регулярным выражением.

Образцы в списке_образцов должны разделяться символами новой строки.

Приклади

Пример 1: Поиск всех вхождений слова

Чтобы найти все вхождения слова "Posix" (независимо от регистра) в файле text.mm и выдать номера соответствующих строк:

example% /usr/bin/grep -i -n posix text.mm

Пример 2: Поиск пустых строк

Чтобы найти все пустые строки в стандартном входном потоке:

example% /usr/bin/grep ^$ або

example% /usr/bin/grep -v .

Пример 3: Поиск строк, содержащих фиксированные подстроки

Обе следующих команды выдают все строки, содержащие подстроки abc, def или и ту, и другую:

example% /usr/xpg4/bin/grep -E 'abc def'
example% /usr/xpg4/bin/grep -F 'abc def'

Наши рекомендации