В этой статье мы покажем вам, как выполнить расширенный поиск строки с помощью Grep с регулярным выражением, предоставив вам 10 практических примеров его реализации. Многие примеры, обсуждаемые в этой статье, имеют практическое значение, что означает, что вы можете использовать их в повседневном программировании Linux. В следующих примерах описаны некоторые примеры регулярных выражений для часто используемых шаблонов.
- Пример 1: Найти отдельного фрахтовщика в текстовом файле
- Пример 2: Найти Одиночная строка в текстовом файле
- Пример 3: Найти отдельного специального фрахтователя в текстовом файле
- Пример 4: Соответствие Строки, начинающиеся с определенного текста
- Пример 5: Соответствие строк, заканчивающихся определенным текстом
- Пример 6: Сопоставление строк определенной длины
- Пример 7: Сопоставление строк, содержащих любое из некоторых регулярных выражений
- Пример 8: Соответствующие строки, содержащие все некоторые регулярные выражения
- Пример 9: Сопоставление строк, содержащих только определенные символы
- Пример 10: Поиск фраз вне зависимости от пробелов
- Резюме
- Ресурсы для системных администраторов
- Ресурсы для программистов ядра Linux
Пример 1: Найти отдельного фрахтовщика в текстовом файле
Для вывода строк в файле ‘ book ‘, содержащие символ’ $ ‘, введите:
Пример 2: Найти Одиночная строка в текстовом файле
Чтобы вывести строки в файле ‘book’, который содержит строку ‘$ 14.99’, введите:
Пример 3: Найти отдельного специального фрахтователя в текстовом файле
Для вывода строк в файле ‘ book ‘, содержащие символ’ ‘, введите:
Пример 4: Соответствие Строки, начинающиеся с определенного текста
Используйте ‘ˆ’ в регулярном выражении для обозначения начала строки.
Для вывода всех строк в ‘/usr/dict/words ‘начиная с’ pro ‘, введите:
Чтобы вывести все строки в файле book, начинающиеся с текста in the start, независимо от регистра, ty pe:
ПРИМЕЧАНИЕ: Эти регулярные выражения были заключены в кавычки с символами ‘; это связано с тем, что некоторые оболочки иначе рассматривают символ «ˆ» как специальный «метасимвол»
В дополнение к поиску слов и фраз вы можете использовать grep для поиска сложных текстовых шаблонов, называемых регулярными выражениями. Регулярное выражение — или «регулярное выражение» — это текстовая строка специальных символов, которая определяет набор шаблонов для сопоставления.
С технической точки зрения, слово или фраза шаблоны — это регулярные выражения, очень простые. В регулярном выражении большинство символов, включая буквы и цифры, представляют собой самих себя. Например, шаблон регулярного выражения 1 соответствует строке ‘1’, а шаблон boy соответствует строке ‘boy’.
Существует ряд зарезервированных символов, называемых метасимволами, которые не представляют себя в регулярном выражении, но имеют особое значение, которое используется для построения сложных шаблонов. Это следующие метасимволы: . , * , [, ] , ˆ, $ и . Стоит отметить, что такие метасимволы распространены почти во всех распространенных и специальных дистрибутивах Linux. Вот хорошая статья, в которой рассматриваются специальные значения метасимволов и приводятся примеры их использования.
Пример 5: Соответствие строк, заканчивающихся определенным текстом
Используйте ‘$’ как последний символ цитируемого текста, чтобы соответствовать этому тексту только в конце строки. Чтобы вывести строки в файле ‘going’, заканчивающиеся восклицательным знаком, введите:
Пример 6: Сопоставление строк определенной длины
Чтобы сопоставить строки определенной длины, используйте это количество символов ‘.’ Между ‘ˆ’ и ‘$’ — например, чтобы соответствует всем строкам шириной в два символа (или столбца), используйте ‘ˆ .. $’ в качестве регулярного выражения для поиска.
Чтобы вывести все строки в ‘/usr/dict/words’, которые имеют ширину ровно три символа, введите:
Для более длинных строк более полезно использовать другую конструкцию: ‘ˆ. {Number } $’, где число — это количество строк, которые необходимо сопоставить. Используйте ‘,’ для указания диапазона чисел.
Чтобы вывести все строки в ‘/usr/dict/words’ шириной ровно двенадцать символов, введите:
Для вывода всех строк в ‘/usr/dict/words’ длиной двадцать два или более символа, введите:
Пример 7: Сопоставление строк, содержащих любое из некоторых регулярных выражений
Чтобы сопоставить строки, содержащие любое из нескольких регулярных выражений, укажите каждое из регулярных выражений для поиска между чередованием операторы (‘ |’) в качестве регулярного выражения для поиска. Будут выведены строки, содержащие любое из заданных регулярных выражений.
Чтобы вывести все строки в ‘playboy’, которые содержат шаблоны ‘the book’ или ‘cake’, введите:
Пример 8: Соответствующие строки, содержащие все некоторые регулярные выражения
Чтобы вывести строки, которые соответствуют всем из ряда регулярных выражений, используйте grep для вывода строк, содержащих первое регулярное выражение, которое вы хотите сопоставить, и перенаправьте вывод в grep со вторым регулярным выражением в качестве аргумента . Продолжайте добавлять каналы в поисковые запросы grep для всех регулярных выражений, которые вы хотите найти.
Чтобы вывести все строки в «плейлисте», который содержит оба шаблона «берег» и «небо», независимо от регистра, введите:
Пример 9: Сопоставление строк, содержащих только определенные символы
Чтобы сопоставить строки, содержащие только определенные символы, используйте регулярное выражение ‘ˆ [символы] * $ ‘, где символы совпадают. Чтобы вывести в ‘/usr/dict/words’ строки, содержащие только гласные, введите:
Параметр ‘-i’ соответствует символам независимо от регистра; Итак, в этом примере все гласные символы совпадают независимо от регистра.
Пример 10: Поиск фраз вне зависимости от пробелов
Один из способов поиска фразы, которая может встречаться с дополнительными пробелами между словами или поперек строки или разрыва страницы, состоит в том, чтобы удалить все строки и лишние пробелы из ввода, а затем выполнить grep. Для этого направьте входной поток в tr с ‘’ r n: > | — ’’ в качестве аргумента опции ‘-d’ (удаление всех разрывов строк из ввода); передать это в фильтр fmt с параметром «-u» (вывод текста с равномерным интервалом); и направьте его в grep с шаблоном для поиска.
Чтобы искать через разрывы строк для строки ‘одновременно с’ в файле ‘docs’, введите:
-’ | 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