Команда Grep в Linux

Обновлено: 05.07.2024

Команда Grep (глобальная печать регулярных выражений) — самая мощная и регулярно используемая утилита командной строки Linux. Используя Grep, вы можете искать полезную информацию, указав критерии поиска. Он ищет определенный шаблон выражения в указанном файле. Когда он находит совпадение, он печатает все строки файла, которые соответствуют указанному шаблону. Это удобно, когда вам нужно фильтровать большие файлы журналов.

В этой статье мы объясним использование утилиты grep на различных примерах. Мы будем использовать Debian 10 для объяснения команд и методов, упомянутых в этой статье.

Установка Grep

Grep устанавливается в большинстве дистрибутивов Linux. Однако, если он отсутствует в вашей системе, вы можете установить его, используя следующий метод в Терминале:

Использование Grep

Вот основной синтаксис команды grep. Он начинается с команды grep, за которой следуют некоторые параметры и критерии поиска, а затем заканчивается именем файла.

Поиск файлов

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

Например, для поиска имени файла, содержащего строку «test», команда будет выглядеть так:

Эта команда выводит список всех файлов, содержащих строку «test».


Поиск строки в файле

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

Например, для поиска строки «test» в файле с именем testfile1 мы использовали следующую команду:


Приведенный выше вывод вернул предложение из testfile1, содержащее строку «employee».

Поиск строки в нескольких файлах

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

Например, для поиска строки "employee" в двух наших файлах testfile1 и testfile2 мы использовали следующую команду:


Приведенная выше команда выведет список всех строк, содержащих строку «employee», из обоих файлов testfile1 и testfile2.

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

Например, если мы возьмем приведенный выше пример, в котором наши имена файлов были testfile1 и testfile2 , команда будет такой:


Поиск строки в файле без учета регистра

Чаще всего вы сталкивались с этим, когда вы ищете что-то с помощью grep, но не получаете результата. Это происходит из-за несоответствия регистра при поиске строки. Как и в нашем примере, если мы по ошибке используем «Employee» вместо «employee», будет возвращено nil, так как наш файл содержит строку «employee” строчными буквами.


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


При использовании флага –i команда выполнит поиск без учета регистра и вернет все строки, содержащие в себе строку «employee», без учета того, какие буквы находятся в верхнем или нижнем регистре. .

Поиск с использованием регулярного выражения

При правильном использовании регулярное выражение является очень эффективной функцией grep. С помощью команды Grep вы можете определить регулярное выражение с начальным и конечным ключевым словом. При этом вам не нужно будет вводить всю строку с помощью команды grep. Для этой цели можно использовать следующий синтаксис.

Например, для поиска строки в файле с именем testfile1, которая начинается со строки "this" и заканчивается строкой "data", мы использовали следующую команду:


Он напечатает всю строку из testfile1, содержащую выражение (начальное ключевое слово «это» и конечное ключевое слово «данные»).

Вывести определенное количество строк после/перед строкой поиска

Вы также можете отобразить определенное количество строк в файле до/после совпадения строки вместе с самой совпавшей строкой. Для этой цели можно использовать следующий синтаксис:

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

Например, это наш образец файла с именем testfile2.

Следующая команда выведет совпавшую строку, содержащую строку «employee», а также две строки после нее.


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

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

Выделение поиска

Grep по умолчанию печатает совпадающие строки, но не показывает, какая часть строки совпала. Если вы используете параметр –color с grep, он покажет, где в вашем файле появляются строки обработки. Grep по умолчанию использует для выделения красный цвет.

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


Подсчет количества совпадений

Если вы хотите подсчитать, сколько раз определенное слово встречается в определенном файле, вы можете использовать команду grep с параметром –c. Он возвращает только количество совпадений, а не сами совпадения. Для этой цели можно использовать следующий синтаксис:

Наш пример файла выглядит следующим образом:


Ниже приведен пример команды, возвращающей количество раз, когда слово file появлялось в файле с именем testfile3.


Инвертированный поиск

Иногда требуется выполнить обратный поиск, чтобы отобразить все строки, кроме тех, которые соответствуют входным данным. Для этого просто используйте флаг –v, за которым следует grep:

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


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

Grep также можно использовать для фильтрации требуемого результата из вывода различных команд. Например, из вывода команды «apt –installed list» вы хотите найти только те пакеты, которые были установлены автоматически, вы можете отфильтровать результат с помощью команды grep следующим образом:


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


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

Об авторе

Карим Буздар

Карим Буздар имеет степень инженера в области телекоммуникаций и несколько сертификатов системного администратора. Как ИТ-инженер и технический автор, он пишет для различных веб-сайтов. Он ведет блог на LinuxWays.

В этом руководстве подробно описаны наиболее полезные команды grep для систем Linux/Unix.

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

заголовок изображения для команд grep в linux

  • Linux или UNIX-подобная система
  • Доступ к терминалу/командной строке
  • Пользователь с разрешениями на доступ к нужным файлам и каталогам

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

Что такое команда grep?

Grep — это аббревиатура, расшифровывающаяся как Global Regular Expression Print.

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

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

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

Простейший синтаксис команды grep выглядит следующим образом:

grep simple пример синтаксиса

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

Примечание. Grep чувствителен к регистру. Обязательно используйте правильный регистр при выполнении команд grep.

Чтобы найти файл

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

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

 пример командных слов grep, содержащих введенную вами строку символов

Совет. Если шаблон поиска включает символы, отличные от буквенно-цифровых, используйте кавычки. Сюда входят пробелы или любой символ.

Поиск в нескольких файлах

Чтобы найти несколько файлов с помощью команды grep, вставьте имена файлов, которые вы хотите найти, разделив их пробелом.

В нашем случае команда grep для сопоставления слова phoenix в трех файлах sample , sample2 и sample3 выглядит следующим образом:

Терминал печатает имя каждого файла, содержащего совпадающие строки, и фактические строки, содержащие требуемую строку символов.

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

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

Совет: обратитесь к нашей статье Команды Xargs, чтобы узнать, как использовать xargs с grep для поиска строки в списке файлов.

Поиск во всех файлах в каталоге

Чтобы найти все файлы в текущем каталоге, используйте звездочку вместо имени файла в конце команды grep.

В этом примере мы используем nix в качестве критерия поиска:

Вывод показывает имя файла с nix и возвращает всю строку.

Найти только целые слова

Grep позволяет находить и печатать результаты только для целых слов. Чтобы найти слово phoenix во всех файлах в текущем каталоге, добавьте -w к команде grep.

Эта опция печатает только строки с полным совпадением слов и именами файлов, в которых они были найдены:

пример строк печати grep с полным совпадением слов

Если параметр -w опущен, grep отображает шаблон поиска, даже если он является подстрокой другого слова.

Если вы хотите найти несколько строк и шаблонов слов, ознакомьтесь с нашей статьей о том, как выполнить поиск нескольких строк, шаблонов или слов.

Игнорировать регистр при поиске Grep

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

Пример этой команды:

Если мы используем оператор -i для поиска файлов phoenix в текущем каталоге, результат будет выглядеть следующим образом:

пример использования оператора i для поиска файлов с помощью grep

Искать в подкаталогах

Чтобы включить в поиск все подкаталоги, добавьте оператор -r к команде grep.

пример grep, включая все подкаталоги в поиске

Эта команда выводит совпадения для всех файлов в текущем каталоге, подкаталогах и точный путь с именем файла. В приведенном ниже примере мы также добавили оператор -w для отображения целых слов, но форма вывода осталась прежней.

Обратный поиск grep

Вы можете использовать grep для вывода всех строк, которые не соответствуют определенному шаблону символов. Чтобы инвертировать поиск, добавьте -v к команде grep.

Чтобы исключить все строки, содержащие phoenix , введите:

Терминал печатает все строки, не содержащие слова, используемого в качестве критерия поиска. Используйте -i, чтобы игнорировать регистр, чтобы полностью исключить слово, используемое для этого поиска:

пример исключая строки в grep

Показать строки, точно соответствующие строке поиска

Команда grep печатает целые строки, когда находит совпадение в файле. Чтобы напечатать только те строки, которые полностью соответствуют строке поиска, добавьте параметр -x.

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

Вот сравнение результатов без оператора -x и с ним в нашей команде grep:

пример сравнения с оператором x в команде grep

Чтобы получить список имен совпадающих файлов

Иногда вам нужно только увидеть имена файлов, которые содержат слово или строку символов, и исключить фактические строки. Чтобы вывести только те имена файлов, которые соответствуют вашему запросу, используйте оператор -l:

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

Вывод показывает точные имена файлов, которые содержат phoenix в текущем каталоге, но не печатает строки с соответствующим словом:

Напоминаем, что используйте оператор рекурсивного поиска -r, чтобы включить в поиск все подкаталоги.

Чтобы подсчитать количество совпадений

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

Используйте оператор -c, чтобы подсчитать количество совпадений:

пример подсчета общего количества совпадений при поиске

Отображение количества строк до или после строки поиска

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

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

  • Используйте -A и количество строк для отображения после совпадения: grep -A 3 phoenix sample — эта команда печатает три строки после совпадения.
  • Используйте -B и количество строк для отображения перед совпадением: grep -B 2 phoenix sample — эта команда выводит две строки перед совпадением.
  • Используйте -C и несколько строк для отображения до и после совпадения: grep -C 2 phoenix sample — эта команда выводит две строки до и после совпадения.

Отображение номеров строк с совпадениями grep

Когда grep выводит результаты с большим количеством совпадений, удобно видеть номера строк. Добавьте оператор -n к любой команде grep, чтобы отобразить номера строк.

Мы будем искать Phoenix в текущем каталоге, покажем две строки до и после совпадений вместе с их номерами строк.

пример grep, отображающий две строки до и после совпадений

Ограничить вывод grep фиксированным количеством строк

Отдельные файлы, например файлы журналов, могут содержать множество совпадений с шаблонами поиска grep. Ограничьте количество строк в выводе grep, добавив в команду параметр -m и число.

В этом случае терминал распечатает первые два совпадения, найденные в файле примера.

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

Теперь вы знаете, как использовать команду grep в Linux/Unix.

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

Диллион Мегида

Диллион Мегида

Учебное пособие по команде Grep: поиск файла в Linux и Unix с рекурсивным поиском

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

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

Как использовать grep

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

Обратите внимание, что одинарные или двойные кавычки необходимо заключать в текст, если он состоит из более чем одного слова.

Вы также можете использовать подстановочный знак (*), чтобы выбрать все файлы в каталоге.

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

Например, предположим, что у нас есть следующие файлы (с именем grep.txt):

Следующая команда grep будет искать все вхождения слова «вы»:

Результат:

ожидается, что у вас будет другой цвет, чем другой текст, чтобы легко определить, что искали.

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

Параметры, используемые с grep

1. -n (--line-number) - перечислить номера строк

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

2. -c (--count) - выводит количество строк совпадений

Обратите внимание, что если бы в первой строке было другое "вы", опция -c все равно напечатала бы 2. Это связано с тем, что она связана с количеством строк, в которых появляются совпадения, а не с количеством совпадений.

3. -v (--invert-match) - выводит строки, не соответствующие заданному шаблону

Обратите внимание, что мы также использовали опцию -n ? Да, вы можете применить несколько параметров в одной команде.

4. -i (--ignore-case) — используется для нечувствительности к регистру

5. -l (--files-with-matches) - вывести имена файлов, соответствующие шаблону

По умолчанию grep ищет строки, содержащие указанный шаблон. Это означает, что grep yo grep.txt выведет те же результаты, что и grep yo grep.txt, потому что в вас можно найти 'yo'. Аналогично, "оу".

С параметром -w команда grep гарантирует, что совпадения соответствуют указанному шаблону. Пример:

7. -o (--only-matching) - печатать только совпадающий шаблон

По умолчанию grep печатает строку, в которой найден соответствующий шаблон. С опцией -o построчно печатается только совпадающий шаблон. Пример:

8. -A (--after-context) и -B (--before-context) - вывести строки после и до (соответственно) совпавшего шаблона

Этот совпадающий шаблон находится в строке 2. -A 1 означает одну строку после совпавшей строки, а -B 1 означает одну строку перед совпавшей строкой.

Есть также параметр -C (--context), который равен -A + -B . Значение, переданное в -C, будет использоваться для -A и -B .

9. -R (--dereference-recursive) - рекурсивный поиск

По умолчанию grep не может выполнять поиск в каталогах. Если вы попытаетесь это сделать, вы получите сообщение об ошибке ("Это каталог"). С опцией -R становится возможным поиск файлов в каталогах и подкаталогах. Пример:

Регулярные выражения для шаблонов

1. ^pattern - начало строки

Этот шаблон означает, что grep будет соответствовать строкам, строки которых начинаются со строки, указанной после ^ . Пример:

2. pattern$ - конец строки

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

Подведение итогов

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

К этому инструменту прикреплены дополнительные параметры. Вы можете найти с помощью man grep .

Диллион Мегида

Диллион Мегида

Правозащитник разработчиков и создатель контента увлечены тем, что делятся своими знаниями о технологиях. Преподаю JavaScript / ReactJS / NodeJS / React Frameworks / TypeScript / и др.

Если вы дочитали до этого места, отправьте твит автору, чтобы показать, что вам не все равно. Твитнуть спасибо

Научитесь программировать бесплатно.Учебная программа freeCodeCamp с открытым исходным кодом помогла более чем 40 000 человек получить работу в качестве разработчиков. Начать

freeCodeCamp – это поддерживаемая донорами некоммерческая организация, освобожденная от налогов в соответствии со статьей 501(c)(3) (идентификационный номер федерального налогоплательщика США: 82-0779546)

Наша миссия: помочь людям научиться программировать бесплатно. Мы достигаем этого, создавая тысячи видеороликов, статей и интерактивных уроков по кодированию — все они находятся в свободном доступе. У нас также есть тысячи учебных групп freeCodeCamp по всему миру.

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


Дэйв Маккей


Дэйв Маккей
Писатель

Приглашение терминала на ПК с Linux.

Фатмавати Ахмад Заэнури/Shutterstock

Команда Linux grep представляет собой утилиту сопоставления строк и шаблонов, которая отображает совпадающие строки из нескольких файлов. Он также работает с конвейерным выводом других команд. Мы покажем вам, как это сделать.

История grep

Команда grep известна в кругах Linux и Unix по трем причинам. Во-первых, это невероятно полезно. Во-вторых, богатство вариантов может быть ошеломляющим. В-третьих, он был написан за одну ночь, чтобы удовлетворить конкретную потребность. Первые два удара; третья немного не так.

Кен Томпсон извлек возможности поиска по регулярным выражениям из редактора ed (произносится как «и-ди») и создал для себя небольшую программу для поиска в текстовых файлах. Глава его отдела в Bell Labs Дуг Макилрой подошел к Томпсону и описал проблему, с которой столкнулся один из его коллег, Ли МакМахон.

МакМахон пытался определить авторов статей федералистов с помощью текстового анализа. Ему нужен был инструмент, который мог бы искать фразы и строки в текстовых файлах. В тот вечер Томпсон потратил около часа на то, чтобы сделать свой инструмент универсальной утилитой, которую могли бы использовать другие, и переименовал ее в grep . Он взял название из командной строки ed g/re/p , что переводится как «глобальный поиск по регулярным выражениям».

Простой поиск с помощью grep

Чтобы найти строку в файле, передайте условие поиска и имя файла в командной строке:

grep dave /etc/пароль в окне терминала

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

Давайте посмотрим на результаты, в которых есть несколько совпадающих строк. Мы будем искать слово «Среднее» в файле журнала приложения. Поскольку мы не можем вспомнить, написано ли слово в файле журнала строчными буквами, мы будем использовать параметр -i (игнорировать регистр):


Отображается каждая совпадающая строка с выделенным в каждой совпадающим текстом.


Мы можем отобразить несовпадающие строки, используя параметр -v (инвертировать соответствие).


Выделение не выполняется, поскольку это несовпадающие строки.


Мы можем сделать grep полностью бесшумным. Результат передается оболочке как возвращаемое значение от grep. Нулевой результат означает, что строка была найдена, а результат, равный единице, означает, что она не была найдена. Мы можем проверить код возврата, используя $? специальные параметры:


Рекурсивный поиск с помощью grep

Для поиска во вложенных каталогах и подкаталогах используйте параметр -r (рекурсивный). Обратите внимание, что вы не указываете имя файла в командной строке, вы должны указать путь. Здесь мы ищем в текущем каталоге «.» и любые подкаталоги:


Вывод включает каталог и имя файла каждой совпадающей строки.


Мы можем заставить grep следовать символическим ссылкам, используя параметр -R (рекурсивное разыменование). У нас есть символическая ссылка в этом каталоге, которая называется logs-folder. Он указывает на /home/dave/logs .


Давайте повторим наш последний поиск с параметром -R (рекурсивное разыменование):

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


Поиск целых слов

По умолчанию grep будет соответствовать строке, если цель поиска появляется где-либо в этой строке, в том числе внутри другой строки. Посмотрите на этот пример. Мы будем искать слово «бесплатно».


Результаты представляют собой строки, в которых есть строка «free», но они не являются отдельными словами. Они являются частью строки «MemFree».


Чтобы заставить grep сопоставлять только отдельные «слова», используйте параметр -w (регулярное выражение слова).


На этот раз результатов нет, потому что поисковый запрос «бесплатно» не отображается в файле как отдельное слово.

Использование нескольких условий поиска

Параметр -E (расширенное регулярное выражение) позволяет выполнять поиск по нескольким словам. (Опция -E заменяет устаревшую версию grep egrep .)

Эта команда выполняет поиск по двум ключевым словам: «средний» и «memfree».


Все совпадающие строки отображаются для каждого условия поиска.


Вы также можете искать несколько терминов, которые не обязательно являются целыми словами, но могут быть и целыми словами.

Параметр -e (шаблоны) позволяет использовать несколько условий поиска в командной строке. Мы используем функцию скобок регулярного выражения для создания шаблона поиска. Он сообщает grep, что он должен соответствовать любому из символов, содержащихся в квадратных скобках «[].» Это означает, что при поиске grep будет соответствовать либо «kB», либо «KB».


Обе строки совпадают, и фактически некоторые строки содержат обе строки.


Точное совпадение строк

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


Единственная совпадающая строка будет найдена и отображена.

Противоположным является отображение только тех строк, которые не совпадают. Это может быть полезно, когда вы просматриваете файлы конфигурации. Комментарии — это здорово, но иногда трудно найти среди них фактические настройки. Вот файл /etc/sudoers:


Мы можем эффективно отфильтровать строки комментариев следующим образом:


Это намного проще анализировать.

Отображение только совпадающего текста

Может быть случай, когда вы не хотите видеть всю совпадающую строку, а только совпадающий текст. Опция -o (только соответствие) делает именно это.

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


Подсчет с помощью grep

grep — это не только текст, но и числовая информация. Мы можем заставить grep считаться для нас разными способами.Если мы хотим узнать, сколько раз поисковый запрос появляется в файле, мы можем использовать параметр -c (количество).


grep сообщает, что поисковый запрос встречается в этом файле 240 раз.

Вы можете заставить grep отображать номер строки для каждой соответствующей строки, используя параметр -n (номер строки).


Номер строки для каждой соответствующей строки отображается в начале строки.


Чтобы уменьшить количество отображаемых результатов, используйте параметр -m (максимальное количество). Мы собираемся ограничить вывод пятью совпадающими строками:


Добавление контекста

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

Чтобы отобразить несколько строк после совпадающей строки, используйте параметр -A (после контекста). В этом примере мы запрашиваем три строки:


Чтобы увидеть несколько строк перед совпадающей строкой, используйте параметр -B (контекст перед).


Чтобы включить строки до и после совпадающей строки, используйте параметр -C (контекст).


Отображение совпадающих файлов

Чтобы просмотреть имена файлов, содержащих поисковый запрос, используйте параметр -l (файлы с совпадением). Чтобы узнать, какие файлы исходного кода C содержат ссылки на заголовочный файл sl.h, используйте следующую команду:


Перечислены имена файлов, а не совпадающие строки.


И, конечно же, мы можем искать файлы, не содержащие поисковый запрос. Опция -L (файлы без совпадения) делает именно это.


Начало и конец строк

Мы можем заставить grep отображать только совпадения, которые находятся либо в начале, либо в конце строки. Оператор регулярного выражения «^» соответствует началу строки. Практически все строки в файле журнала будут содержать пробелы, но мы собираемся искать строки, в которых первым символом является пробел:


Отображаются строки, в которых первым символом в начале строки является пробел.


Чтобы соответствовать концу строки, используйте оператор регулярного выражения "$". Мы будем искать строки, оканчивающиеся на «00».


На дисплее отображаются строки, в конце которых стоит «00».


Использование каналов с grep

Конечно, вы можете направить входные данные в grep , направить вывод из grep в другую программу и разместить grep в середине цепочки конвейеров.

Допустим, мы хотим увидеть все вхождения строки «ExtractParameters» в наши файлы исходного кода C. Мы знаем, что их будет довольно много, поэтому мы передаем вывод в less :


Выходные данные представлены меньше .


Это позволяет пролистывать список файлов и использовать функцию поиска less.

Если мы направим вывод grep в wc и воспользуемся параметром -l (lines), мы сможем подсчитать количество строк в файлах исходного кода, содержащих «ExtractParameters». (Мы могли бы добиться этого, используя параметр grep -c (count), но это отличный способ продемонстрировать конвейер из grep .)


С помощью следующей команды мы передаем вывод ls в grep, а вывод grep — в sort. Мы перечисляем файлы в текущем каталоге, выбираем те, в которых есть строка «Авг», и сортируем их по размеру файла:


Давайте разберем это:

  • ls -l: выполнить длинный список файлов с помощью ls .
  • grep «Aug»: выберите строки из списка ls, в которых есть «Aug». Обратите внимание, что при этом также будут найдены файлы, в именах которых есть «Авг».
  • sort +4n: сортировка результатов команды grep по четвертому столбцу (размер файла).

Мы получаем отсортированный список всех файлов, измененных в августе (независимо от года), в порядке возрастания размера файла.

grep: меньше команда, больше союзник

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

Сочетание grep с некоторыми регулярными выражениями действительно выводит его на новый уровень.

< /tbody>
Команды Linux
Файлы tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm
Процессы alias · screen · top · nice · renice · прогресс · strace · systemd · tmux · chsh · история · at · пакетное · бесплатное · которое · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · стена · yes · kill · спать · sudo · su · время · groupadd · usermod · группы · lshw · выключение · перезагрузка · halt · poweroff · passwd · lscpu · crontab · date · bg · fg
Сеть netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · копать · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw
  • › Как использовать команду cut в Linux
  • › 10 основных команд Linux для начинающих
  • › Как использовать strace для мониторинга системных вызовов Linux
  • › Как работать с пакетами Snap в Linux
  • › Что означает XD и как вы его используете?
  • › Худшее, что есть в телефонах Samsung, — это программное обеспечение Samsung.
  • › Почему прозрачные чехлы для телефонов желтеют?
  • ›5 шрифтов, которые следует прекратить использовать (и лучшие альтернативы)

Читайте также: