Поиск строк в текстовых файлах с помощью grep с регулярным выражением

grep — один из самых популярных инструментов для поиска строк в текстовом файле. Название ‘grep’ происходит от команды в уже устаревшем средстве редактора строк Unix ed — команде ed для поиска глобально по файлу для регулярного выражения , а затем печать этих строк была g/re/p , где re было регулярным выражением, которое вы бы использовали. В конце концов, команда grep была написана для выполнения этого поиска в файле, когда ed не используется.

В этой статье мы покажем вам, как выполнить расширенный поиск строки с помощью Grep с регулярным выражением, предоставив вам 10 практических примеров его реализации. Многие примеры, обсуждаемые в этой статье, имеют практическое значение, что означает, что вы можете использовать их в повседневном программировании Linux. В следующих примерах описаны некоторые примеры регулярных выражений для часто используемых шаблонов.

Пример 1: Найти отдельного фрахтовщика в текстовом файле

Для вывода строк в файле ‘ book ‘, содержащие символ’ $ ‘, введите:

$ grep’ $ ‘book

Пример 2: Найти Одиночная строка в текстовом файле

Чтобы вывести строки в файле ‘book’, который содержит строку ‘$ 14.99’, введите:

$ grep ‘ $ 14 .99’ book

Пример 3: Найти отдельного специального фрахтователя в текстовом файле

Для вывода строк в файле ‘ book ‘, содержащие символ’ ‘, введите:

$ grep’ \ ‘book

Пример 4: Соответствие Строки, начинающиеся с определенного текста

Используйте ‘ˆ’ в регулярном выражении для обозначения начала строки.

Для вывода всех строк в ‘/usr/dict/words ‘начиная с’ pro ‘, введите:

$ grep’ ˆpro ‘/usr/dict/words

Чтобы вывести все строки в файле book, начинающиеся с текста in the start, независимо от регистра, ty pe:

$ grep -i ‘ˆв начале’ книги

ПРИМЕЧАНИЕ: Эти регулярные выражения были заключены в кавычки с символами ‘; это связано с тем, что некоторые оболочки иначе рассматривают символ «ˆ» как специальный «метасимвол»

В дополнение к поиску слов и фраз вы можете использовать grep для поиска сложных текстовых шаблонов, называемых регулярными выражениями. Регулярное выражение — или «регулярное выражение» — это текстовая строка специальных символов, которая определяет набор шаблонов для сопоставления.

С технической точки зрения, слово или фраза шаблоны — это регулярные выражения, очень простые. В регулярном выражении большинство символов, включая буквы и цифры, представляют собой самих себя. Например, шаблон регулярного выражения 1 соответствует строке ‘1’, а шаблон boy соответствует строке ‘boy’.

Существует ряд зарезервированных символов, называемых метасимволами, которые не представляют себя в регулярном выражении, но имеют особое значение, которое используется для построения сложных шаблонов. Это следующие метасимволы: . , * , [, ] , ˆ, $ и . Стоит отметить, что такие метасимволы распространены почти во всех распространенных и специальных дистрибутивах Linux. Вот хорошая статья, в которой рассматриваются специальные значения метасимволов и приводятся примеры их использования.

Пример 5: Соответствие строк, заканчивающихся определенным текстом

Используйте ‘$’ как последний символ цитируемого текста, чтобы соответствовать этому тексту только в конце строки. Чтобы вывести строки в файле ‘going’, заканчивающиеся восклицательным знаком, введите:

$ grep ‘! $’ Going

Пример 6: Сопоставление строк определенной длины

Чтобы сопоставить строки определенной длины, используйте это количество символов ‘.’ Между ‘ˆ’ и ‘$’ — например, чтобы соответствует всем строкам шириной в два символа (или столбца), используйте ‘ˆ .. $’ в качестве регулярного выражения для поиска.

Чтобы вывести все строки в ‘/usr/dict/words’, которые имеют ширину ровно три символа, введите:

$ grep ‘ˆ … $’/usr/dict/words

Для более длинных строк более полезно использовать другую конструкцию: ‘ˆ. {Number } $’, где число — это количество строк, которые необходимо сопоставить. Используйте ‘,’ для указания диапазона чисел.

Чтобы вывести все строки в ‘/usr/dict/words’ шириной ровно двенадцать символов, введите:

$ grep ‘ˆ. {12 } $’/usr/dict/words

Для вывода всех строк в ‘/usr/dict/words’ длиной двадцать два или более символа, введите:

$ grep ‘ˆ. {22, } $’/usr/dict/words

Пример 7: Сопоставление строк, содержащих любое из некоторых регулярных выражений

Чтобы сопоставить строки, содержащие любое из нескольких регулярных выражений, укажите каждое из регулярных выражений для поиска между чередованием операторы (‘ |’) в качестве регулярного выражения для поиска. Будут выведены строки, содержащие любое из заданных регулярных выражений.

Чтобы вывести все строки в ‘playboy’, которые содержат шаблоны ‘the book’ или ‘cake’, введите:

$ grep ‘the book | cake’ playboy

Пример 8: Соответствующие строки, содержащие все некоторые регулярные выражения

Чтобы вывести строки, которые соответствуют всем из ряда регулярных выражений, используйте grep для вывода строк, содержащих первое регулярное выражение, которое вы хотите сопоставить, и перенаправьте вывод в grep со вторым регулярным выражением в качестве аргумента . Продолжайте добавлять каналы в поисковые запросы grep для всех регулярных выражений, которые вы хотите найти.

Чтобы вывести все строки в «плейлисте», который содержит оба шаблона «берег» и «небо», независимо от регистра, введите:

$ grep -i плейлист ‘берег’ | grep -i sky

Пример 9: Сопоставление строк, содержащих только определенные символы

Чтобы сопоставить строки, содержащие только определенные символы, используйте регулярное выражение ‘ˆ [символы] * $ ‘, где символы совпадают. Чтобы вывести в ‘/usr/dict/words’ строки, содержащие только гласные, введите:

$ grep -i ‘ˆ [aeiou] * $’/usr/dict/ слова

Параметр ‘-i’ соответствует символам независимо от регистра; Итак, в этом примере все гласные символы совпадают независимо от регистра.

Пример 10: Поиск фраз вне зависимости от пробелов

Один из способов поиска фразы, которая может встречаться с дополнительными пробелами между словами или поперек строки или разрыва страницы, состоит в том, чтобы удалить все строки и лишние пробелы из ввода, а затем выполнить grep. Для этого направьте входной поток в tr с ‘’ r n: > | — ’’ в качестве аргумента опции ‘-d’ (удаление всех разрывов строк из ввода); передать это в фильтр fmt с параметром «-u» (вывод текста с равномерным интервалом); и направьте его в grep с шаблоном для поиска.

Чтобы искать через разрывы строк для строки ‘одновременно с’ в файле ‘docs’, введите:

$ cat docs | tr -d ’ r n: > |
-’ | fmt -u | grep ‘одновременно с’

Резюме

В этой статье мы рассмотрели 10 практических примеров с помощью команды Grep Linux для поиска и поиска строк в текстовом файле. Попутно мы узнали, как использовать регулярные выражения в сочетании с Grep для выполнения сложного поиска в текстовых файлах. К настоящему времени вы лучше понимаете, насколько мощны функции поиска в Linux.

Вот дополнительные ресурсы для тех, кто хочет узнать больше о программировании для Linux:

Ресурсы для системных администраторов

  • Руководство системного администратора Linux — что такое операционная система Linux и как она работает
  • Системный администратор Linux Руководство — Обзор виртуальной памяти Linux и кэша дискового буфера
  • Руководство системного администратора Linux — Лучшие практики мониторинга систем Linux
  • Руководство системного администратора Linux — Лучшие практики работы с Linux Загрузка и завершение работы
  • Руководство системного администратора Linux — Рекомендации по созданию и управлению операциями резервного копирования

Ресурсы для программистов ядра Linux

  • Как работает управление памятью операционной системы Linux
  • Всесторонний обзор процессов операционной системы ядра Linux
  • Что механизмы, лежащие в основе управления задачами ядра Linux.
Linux Fil Электронный системный словарь

Комплексный обзор работы файловой системы и системы каталогов Linux

Оцените статью
nanomode.ru
Добавить комментарий