Как использовать команду Grep в Linux

Понимание команды grep с практическими примерами для простой фильтрации и отображения содержимого файла

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

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

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

В этой статье давайте grepподробно рассмотрим работу команды с некоторыми практическими примерами.

Параметры, доступные с grepкомандой

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

Вариант Описание
-i Для поиска без учета регистра
-r Для рекурсивного поиска всех файлов в указанном каталоге и его подкаталогах
-c Чтобы отобразить общее количество появлений строки
-v Чтобы отобразить несовпадающие строки
-w Фильтр для этого конкретного слова, используемого отдельно

Используя grepкоманду

grepКоманда обычно используется с |утилитой pipe ( ). Его можно реализовать с помощью оболочки оболочки, если вы хотите использовать его с некоторыми другими командами Linux. Хотя, grepтакже можно использовать индивидуально без |утилиты pipe ( ).

Давайте посмотрим на некоторые из основных синтаксисов grepкоманды с утилитой pipe и без нее.

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

INDIA IS A BEAUTIFUL COUNTRY OF PEACE LOVING PEOPLE.
india stands on three pillars of legislature, executive and judiciary.
India Is a Beautiful Country Of Peace Loving People.
India cares for the people as it's resource
cartesian coordinates
importance of all th cartesian coordinates.
Following are two empty lines.



use of a bullock cart is a common sight in the village for the agrarian chores.

This is the end of the sample file.

grepиспользуется с утилитой pipe (|)

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

Синтаксис :

[command] | grep [string]

Пример :

cat sample.txt | grep legislature

Здесь я использовал catкоманду для отображения некоторых строк из файла sample.txt. Должны отображаться только те строки, которые содержат слово «законодательный орган», и игнорировать остальные строки.

Выход :

[email protected]:~/workspace$ cat sample.txt | grep legislature
india stands on three pillars of legislature, executive and judiciary.
[email protected]:~/workspace$

grepиспользуется без утилиты pipe (|)

grepможно даже использовать напрямую как отдельную команду без использования | утилиты pipe ( ).

Синтаксис :

grep [string_to_be_searched] [filename]

Пример :

grep India sample.txt

Выход :

India Is a Beautiful Country Of Peace Loving People.
India cares for the people as it's resource

Таким образом, я использовал grepкоманду непосредственно для фильтрации строк, содержащих строку «Индия», из текстового файла «sample.txt».

Поиск без учета регистра с помощью grepкоманды

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

Давайте посмотрим на это на примере.

grep peace sample.txt

В этом случае мы не получим вывода, поскольку в примере файла нет слова «мир». У нас есть слово «Мир» с большой буквы. Слово то же самое, но когда мы используем grepкоманду без какой-либо опции, она ищет точное совпадение в файле, игнорируя любые изменения в регистре букв.

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

Синтаксис:

grep -i [string] [filename]

Пример :

grep -i peace sample.txt

Выход :

INDIA IS A BEAUTIFUL COUNTRY OF PEACE LOVING PEOPLE.
India Is a Beautiful Country Of Peace Loving People.

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

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

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

Синтаксис :

grep -i -r [string] [file_path]

Пример :

grep -i -r tomcat /home/gaurav/workspace

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

Выход :

./context_log.policy:// catalina.policy - Security Policy Permissions for Tomcat 7
./context_log.policy:// Note: If tomcat-juli.jar is in ${catalina.base} and not in ${catalina.home},
./context_log.policy://  grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..}
./context_log.policy:grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {
./context_log.policy:    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server";
./context.xml:    
./catalina.properties:# - Tomcat Bootstrap JARs
./catalina.properties:# - Tomcat API JARs
./catalina.properties:# - Tomcat JARs
./catalina.properties:# - Common non-Tomcat JARs
./catalina.properties:org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar
./catalina.properties:tomcat.util.buf.StringCache.byte.enabled=true
./catalina.properties:#tomcat.util.buf.StringCache.char.enabled=true
./catalina.properties:#tomcat.util.buf.StringCache.trainThreshold=500000
./catalina.properties:#tomcat.util.buf.StringCache.cacheSize=5000
./server.xml:              pathname="conf/tomcat-users.xml" />
./server.xml:    
./tomcat-users.xml:  
./tomcat-users.xml:
./web.xml:  
./web.xml:  

ПРИМЕЧАНИЕ . При использовании -rпараметра с grepкомандой нам необходимо указать путь к файлу, а не имя файла.

Поиск целых слов только с помощью grepкоманды

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

Запутались с этим? Не волнуйтесь, это будет намного легче понять, если вы получите пример.

Пример :

Здесь я хочу найти отдельное слово «тележка» и отобразить все строки, соответствующие этому слову, в файле «sample.txt».

grep -i cart sample.txt

Выход :

Cartesian coordinates
importance of all the Cartesian coordinates.
use of a bullock cart is a common sight in the village for the agrarian chores
The cart went missing as the boy left it loose.

В выводе вы можете заметить, что слово «декартово» также содержит слово «тележка» и, следовательно, строки, содержащие слово «декартово», также отображаются, даже если мы не хотим, чтобы они отображались.

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

Синтаксис :

grep -i -w [string] [filename]

Пример :

grep -i -w cart sample.txt

Выход :

use of a bullock cart is a common sight in the village for the agrarian chores.
The cart went missing as the boy left it loose.

Теперь, когда вы использовали wопцию -, grepвы получите только те строки, в которых слово «тележка» используется целиком.

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

grepКоманда также может использоваться в обратном порядке. Мы можем использовать grepкоманду наоборот, скрывая совпадающие строки и отображая только те строки, где совпадения не обнаружены. Вы можете сделать это, используя -vопцию с grepкомандой.

Синтаксис :

grep -i -v [string] [filename]

Пример :

grep -i -v resource sample.txt

Выход :

INDIA IS A BEAUTIFUL COUNTRY OF PEACE LOVING PEOPLE.
india stands on three pillars of legislature, executive and judiciary.
India Is a Beautiful Country Of Peace Loving People.
cartesian coordinates
importance of all th cartesian coordinates.




use of a bullock cart is a common sight in the village for the agrarian chores.
This is the end of the sample file.

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

Подсчет вхождений совпадающей строки

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

Синтаксис :

grep -i -c [string] [filename]

Пример :

grep -i -c india sample.txt

Выход :

[email protected]:~/workspace$ grep -i -c india sample.txt
4
[email protected]:~/workspace$

Здесь вывод - это число, которое представляет собой количество появлений слова «Индия» в файле sample.txt.

ПРИМЕЧАНИЕ . Я использовал эту -iопцию в каждом примере, чтобы не беспокоиться о чувствительности к регистру. Если вы точно знаете регистр слова, которое ищете, то можете спокойно опустить эту -i опцию.

Заключение

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

Tags: #grep

Как включить SSH в Ubuntu 20.04

Как включить SSH в Ubuntu 20.04

Безопасный доступ к вашей машине Ubuntu из любого места

Как настроить сервер и клиент WireGuard VPN в Ubuntu 20.04

Как настроить сервер и клиент WireGuard VPN в Ubuntu 20.04

Настройте собственный VPN с помощью Wireguard

Как установить Git на Ubuntu 20.04 LTS

Как установить Git на Ubuntu 20.04 LTS

Одна из первых вещей, которые вы должны установить на свой Linux-компьютер

Как использовать команду SCP в Linux

Как использовать команду SCP в Linux

Простое руководство, которое поможет вам перенести файлы в удаленную систему из вашей системы Linux с помощью команды scp.

Как создать пользователя Sudo в Ubuntu 20.04 LTS

Как создать пользователя Sudo в Ubuntu 20.04 LTS

Предоставьте root-права любому пользователю с sudo в Ubuntu 20.04 LTS

Как добавить ключи SSH в Ubuntu 20.04

Как добавить ключи SSH в Ubuntu 20.04

В этой статье объясняется процесс добавления аутентификации ключей SSH на сервер Ubuntu 20.04 и отключения аутентификации на основе пароля.

Как запустить тесты скорости из командной строки Linux с помощью Speedtest-cli

Как запустить тесты скорости из командной строки Linux с помощью Speedtest-cli

Speedtest.net - это сервис для проверки скорости вашего интернет-соединения. Он использует ближайший сервер speedtest.net для загрузки

Лучший бесплатный видеоредактор для Ubuntu в 2020 году

Лучший бесплатный видеоредактор для Ubuntu в 2020 году

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

7 лучших приложений для динамических обоев Ubuntu

7 лучших приложений для динамических обоев Ubuntu

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

Как установить TensorFlow на CentOS

Как установить TensorFlow на CentOS

Установите TensorFlow с помощью Python (pip) или контейнера Docker