В этой статье мы покажем вам, как выполнить расширенный поиск по строке с помощью Grep с регулярным выражением, предоставив вам 10 практических примеров его реализации. Многие примеры, обсуждаемые в этой статье, имеют практическое значение, что означает, что вы можете использовать их в повседневном программировании Linux. В следующих примерах описаны некоторые примеры регулярных выражений для часто используемых шаблонов.
Пример 1: Найдите одного фрахтователя в текстовом файле
Чтобы вывести строки в файле book, содержащие символ «$», введите:
$ grep '\ $' книгаПример 2: Найдите одну строку в текстовом файле
Для вывода строк в файле book, который содержит строку $ 14.99 ', введите:
$ grep '\ $ 14 \.99 'книгаПример 3: Найдите одного специального фрахтователя в текстовом файле
Чтобы вывести строки в файле book, содержащие символ '\', введите:
$ grep '\\' книгаПример 4: Соответствие строк, начинающихся с определенного текста
Используйте 'ˆ' в регулярном выражении для обозначения начала строки.
Чтобы вывести все строки в '/ usr / dict / words', начинающиеся с 'pro', введите:
$ grep 'ˆpro' / usr / dict / словаЧтобы вывести все строки в файле book, которые начинаются с текста в начале, независимо от регистра, введите:
$ grep -i 'в начале' книгиПРИМЕЧАНИЕ: Эти регулярные выражения заключены в кавычки с символами '; это потому, что некоторые оболочки иначе трактуют символ 'ˆ' как специальный «метасимвол»
В дополнение к поиску слов и фраз вы можете использовать grep для поиска сложных текстовых шаблонов, называемых регулярными выражениями. Регулярное выражение или «регулярное выражение» - это текстовая строка специальных символов, определяющая набор шаблонов для соответствия.
С технической точки зрения, шаблоны слов или фраз - это регулярные выражения, просто очень простые. В регулярном выражении большинство символов, включая буквы и цифры, представляют собой самих себя. Например, шаблон регулярного выражения 1 соответствует строке '1' и шаблону мальчик соответствует строке 'мальчик'.
Существует ряд зарезервированных символов, называемых метасимволами, которые не представляют себя в регулярном выражении, но имеют особое значение, которое используется для построения сложных шаблонов. Эти метасимволы следующие: ., *, [, ], ˆ, $ и \. Приятно отметить, что такие метасимволы распространены практически среди всех распространенных и специальных дистрибутивов Linux. Вот хорошая статья, в которой рассматриваются специальные значения метасимволов и приводятся примеры их использования.
Пример 5: Соответствие строк, заканчивающихся определенным текстом
Используйте '$' в качестве последнего символа цитируемого текста, чтобы соответствовать этому тексту только в конце строки. Чтобы вывести в файле строки с восклицательным знаком, заканчивающиеся восклицательным знаком, введите:
$ grep '!$ 'идетПример 6: Соответствующие линии определенной длины
Чтобы сопоставить строки определенной длины, используйте это количество символов '.'символы между' ˆ 'и' $ '- например, чтобы соответствовать всем строкам шириной в два символа (или столбца), используйте' ˆ… $ 'в качестве регулярного выражения для поиска.
Чтобы вывести все строки в '/ usr / dict / words' шириной ровно три символа, введите:
$ grep 'ˆ… $' / usr / dict / wordsДля более длинных строк более полезно использовать другую конструкцию: 'ˆ.\ number \ $ ', где число - это количество строк для сопоставления. Используйте ',', чтобы указать диапазон чисел.
Чтобы вывести все строки в '/ usr / dict / words' шириной ровно двенадцать символов, введите:
$ grep 'ˆ.\ 12 \ $ '/ usr / dict / словаЧтобы вывести все строки в '/ usr / dict / words' шириной двадцать два или более символа, введите:
$ grep 'ˆ.\ 22, \ $ '/ usr / dict / wordsПример 7: Соответствующие строки, содержащие любое из некоторых регулярных выражений
Чтобы сопоставить строки, содержащие любое из нескольких регулярных выражений, укажите каждое из регулярных выражений для поиска между операторами чередования ('\ |') в качестве регулярного выражения для поиска. Строки, содержащие любое из заданных регулярных выражений, будут выведены.
Чтобы вывести все строки в 'playboy', которые содержат шаблоны 'the book' или 'cake', введите:
$ grep 'книга \ | торт' плейбойПример 8: Соответствующие строки, содержащие все некоторые регулярные выражения
Чтобы вывести строки, соответствующие все ряда регулярных выражений используйте grep для вывода строк, содержащих первое регулярное выражение, которое вы хотите сопоставить, и направьте вывод в grep со вторым регулярным выражением в качестве аргумента. Продолжайте добавлять каналы в поисковые запросы grep для всех регулярных выражений, которые вы хотите найти.
Чтобы вывести все строки в 'playlist', который содержит оба шаблона 'берег' и 'небо', независимо от регистра, введите:
$ grep -i Плейлист "берег" | grep -i небоПример 9: Соответствующие строки, содержащие только определенные символы
Чтобы сопоставить строки, содержащие только определенные символы, используйте регулярное выражение 'ˆ [characters] * $', где символы - это те, которые должны соответствовать. Чтобы вывести в '/ usr / dict / words' строки, содержащие только гласные, введите:
$ grep -i 'ˆ [aeiou] * $' / usr / dict / wordsПараметр '-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
Комплексный обзор работы файловой системы и системы каталогов Linux