Skip to main content

Пример использования команды grep Linux

9.Linux для Начинающих - Комманда grep и Регулярные Выражения (Июнь 2026)

9.Linux для Начинающих - Комманда grep и Регулярные Выражения (Июнь 2026)

:

Anonim

Команда grep Linux используется как метод фильтрации ввода. GREP означает глобальный принтер для регулярных выражений, и поэтому для его эффективного использования вы должны иметь некоторые знания о регулярных выражениях.

В этой статье вы узнаете ряд примеров, которые помогут вам понять команду grep.

01 из 09

Как искать строку в файле с помощью GREP

Представьте, что у вас есть текстовый файл, называемый книгами со следующими названиями детских книг:

  • Робин Гуд
  • Красная Шапочка
  • Питер Пэн
  • Златовласка и три медведя
  • Белоснежка и семь гномов
  • Pinnochio
  • Кот в мешке
  • Три маленьких поросенка
  • Грюффало
  • Чарли и шоколадная фабрика

Чтобы найти все книги со словом «The» в названии, вы должны использовать следующий синтаксис:

grep Книги

Получены следующие результаты:

  • Златовласка и три медведя
  • Белоснежка и семь гномов
  • Кот в мешке
  • Три маленьких поросенка
  • Грюффало
  • Чарли и шоколадная фабрика

В каждом случае будет выделено слово «The».

Поиск чувствителен к регистру, поэтому, если в одном из названий «the» вместо «The», то он не был бы возвращен.

Чтобы игнорировать случай, вы можете добавить следующий переключатель:

grep книги --ignore-case

Вы также можете использовать ключ -i следующим образом:

grep -i книги

Продолжить чтение ниже

02 из 09

Поиск строки в файле с использованием подстановочных знаков

Команда grep очень мощная. Вы можете использовать множество методов сопоставления шаблонов для фильтрации результатов.

В этом примере я покажу вам, как искать строку в файле с помощью подстановочных знаков.

Представьте, что у вас есть файл, называемый местами со следующими именами шотландских мест:

AberdeenАбериствитAberlourИнверуриплащ с капюшоном без рукавовНьюбергскаяновый оленьновый галлоуэйГлазгоЭдинбург

Если вы хотите найти все места с inver в имени, используйте следующий синтаксис:

grep inver * места

Подстановочный знак звездочки (*) обозначает 0 или много. Поэтому, если у вас есть место под названием inver или место под названием Инвернесс, то оба будут возвращены.

Другим шаблоном, который вы можете использовать, является период (.). Вы можете использовать это для соответствия одной букве.

Место встречи grep inver.r

Вышеупомянутая команда найдет места, называемые inverurie и inverary, но не найдет invereerie, потому что между двумя r может быть только один подстановочный знак, обозначенный одним периодом.

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

Например, посмотрите на этот список доменных имен

  • linux.about.com
  • pcsupport.about.com
  • mp3.about.com
  • minecraft.about.com
  • androidgames.about.com
  • netforbeginners.about.com
  • everydaylinuxuser.com
  • google.co.uk
  • google.au
  • direct.gov.uk

Чтобы найти все о .coms, вы можете просто выполнить поиск, используя следующий синтаксис:

grep * about * domainnames

Вышеприведенная команда упадет, если в списке содержится следующее имя:

  • everydaylinuxuser.com/about.html

Поэтому вы можете попробовать следующий синтаксис:

grep * about.com доменные имена

Это будет работать нормально, если не будет домена со следующим именем:

aboutycom.com

Чтобы действительно искать термин about.com, вам нужно было бы избежать точки следующим образом:

grep * about .com domainnames

Последним шаблоном для отображения вам является знак вопроса, который обозначает нуль или один символ.

Например:

grep? ber placenames

Вышеупомянутая команда вернет aberdeen, aberystwyth или даже berwick.

Продолжить чтение ниже

03 из 09

Поиск строк в начале и конце строки Использование grep

Знак carat (^) и доллара ($) позволяет вам искать шаблоны в начале и конце строк.

Представьте, что у вас есть файл под названием футбол со следующими именами команд:

  • Блэкпул
  • Ливерпуль
  • Манчестер
  • Лестер Сити
  • Манчестер Юнайтед
  • Ньюкасл Юнайтед
  • ФК «Манчестер»

Если вы хотите найти все команды, которые начали с Манчестера, вы использовали бы следующий синтаксис:

Команда grep ^ Манчестер

Вышеупомянутая команда вернет Манчестер Сити и Манчестер Юнайтед, но не ФК «Манчестер».

Кроме того, вы можете найти все команды, заканчивающиеся United, используя следующий синтаксис:

Команда grep United $

Вышеупомянутая команда вернется в «Манчестер Юнайтед» и «Ньюкасл Юнайтед», но не в «Манчестер».

04 из 09

Подсчет количества совпадений Использование grep

Если вы не хотите возвращать фактические строки, соответствующие шаблону, используя grep, но вы просто хотите узнать, сколько из них вы можете использовать следующий синтаксис:

grep -c input inputfile

Если шаблон был сопоставлен дважды, то число 2 будет возвращено.

Продолжить чтение ниже

05 из 09

Поиск всех условий, которые не совпадают с использованием grep

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

  • aberdeen Scotland
  • Глазго Шотландия
  • Ливерпульская Англия
  • бухта Colwyn
  • Лондон, Англия

Возможно, вы заметили, что в заливе Колвин нет страны, связанной с ней.

Для поиска всех мест в стране вы можете использовать следующий синтаксис:

grep land $ places

Результатом возвращения будет все места, за исключением бухты Colwyn.

Это, очевидно, работает только для мест, которые заканчиваются на суше (вряд ли научны).

Вы можете инвертировать выбор, используя следующий синтаксис:

grep -v land $ places

Это найдет все места, которые не заканчиваются землей.

06 из 09

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

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

  • aberdeen scotland
  • Инвернесс Скотланд
  • Ливерпульская Англия
  • Colwyn Bay Wales

Когда приложение попадет на линию после ливерпуль, он перестанет читать, означая, что коловинская бухта полностью пропущена.

Вы можете использовать grep для поиска пустых строк со следующим синтаксисом:

grep ^ $ places

К сожалению, это не особенно полезно, потому что оно просто возвращает пустые строки.

Разумеется, вы могли бы подсчитать количество пустых строк в качестве проверки, чтобы убедиться, что файл действителен следующим образом:

grep -c ^ $ places

Однако было бы более полезно знать номера строк, которые имеют пустую строку, чтобы вы могли их заменить. Вы можете сделать это с помощью следующей команды:

grep -n ^ $ places

Продолжить чтение ниже

07 из 09

Как искать строки с верхним или нижним регистром с помощью grep

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

grep 'A-Z' filename

Квадратные скобки позволяют определить диапазон символов. В приведенном выше примере он соответствует любому символу, который находится между A и Z.

Поэтому для соответствия строчным символам можно использовать следующий синтаксис:

grep 'a-z' filename

Если вы хотите совместить только буквы, а не цифры или другие символы, вы можете использовать следующий синтаксис:

grep 'a-zA-Z' filename

Вы можете сделать то же самое с числами следующим образом:

grep '0-9' filename 08 из 09

Поиск повторяющихся шаблонов с использованием grep

Вы можете использовать фигурные скобки {} для поиска повторяющегося шаблона.

Представьте, что у вас есть файл с номерами телефонов следующим образом:

  • 055-1234
  • 055-4567
  • 555-1545
  • 444-0167
  • 444-0854
  • 4549-2234
  • x44-1234

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

Из предыдущего примера вы знаете, что 0-9 возвращает все числа в файле.

В этом случае мы хотим, чтобы строки начинались с трех чисел, а затем дефиса (-). Вы можете сделать это со следующим синтаксисом:

grep "^ 0-9 0-9 0-9 -" числа

Как мы знаем из предыдущих примеров, карат (^) означает, что линия должна начинаться со следующего шаблона.

0-9 будет искать любое число от 0 до 9. Поскольку это включено три раза, оно соответствует 3 номерам. Наконец, есть дефис, чтобы обозначить, что дефис должен преуспеть в трех числах.

Используя фигурные скобки, вы можете сделать поиск меньшим следующим образом:

grep "^ 0-9 {3 } -" числа

Слэш ускользает от {bracket, так что он работает как часть регулярного выражения, но в сущности говоря, это 0-9 {3}, что означает любое число от 0 до 9 три раза.

Кудрявые скобки также можно использовать следующим образом:

{5,10}{5,}

{5,10} означает, что искомый символ должен повторяться не менее 5 раз, но не более 10, тогда как {5} означает, что символ должен повторяться не менее 5 раз, но может быть больше.

Продолжить чтение ниже

09 из 09

Использование вывода из других команд Использование grep

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

Отличным примером этого является использование команды ps, в которой перечислены активные процессы.

Например, выполните следующую команду:

ps -ef

Отобразятся все запущенные процессы в вашей системе.

Вы можете использовать grep для поиска конкретного работающего процесса следующим образом:

ps -ef | grep firefox

Резюме

Команда grep - это фундаментальная команда Linux, и она заслуживает изучения, так как это облегчит вашу жизнь при поиске файлов и процессов при использовании терминала.