Понимание команды grep с практическими примерами для простой фильтрации и отображения содержимого файла
GREP
означает «Печать глобального регулярного выражения». Это полезная утилита командной строки, предоставляемая Linux, для поиска текстовой строки, которая соответствует шаблону, предоставленному пользователем.
grep
принимает ввод от пользователя в виде строк или слов, которые пользователь желает искать в конкретном файле. Затем команда проверяет указанный пользователем файл на наличие этого шаблона и затем возвращает строки, соответствующие предоставленному шаблону.
Он отлично справляется со своей задачей, фильтруя содержимое файла, что упрощает нашу задачу по поиску определенного содержимого в одном или нескольких файлах одновременно.
В этой статье давайте рассмотрим функционирование grep
команда с некоторыми подробными практическими примерами.
Опции доступны с grep
команда
Это некоторые из основных параметров, которые вы будете часто использовать с grep
команда.
Вариант | Описание |
-я | Для поиска без учета регистра |
-р | Для рекурсивного поиска всех файлов в указанном каталоге и его подкаталогах |
-c | Чтобы отобразить общее количество появлений строки |
-v | Чтобы отобразить несовпадающие строки |
-w | Фильтр для этого конкретного слова, используемого отдельно |
С помощью grep
команда
grep
команда обычно используется с конвейером (|
) полезность. Его можно реализовать с помощью оболочки оболочки, если вы хотите использовать его с некоторыми другими командами Linux. Несмотря на то что, grep
также можно использовать индивидуально без трубы (|
) полезность.
Давайте посмотрим на некоторые из основных синтаксисов grep
команда с утилитой pipe и без нее.
Сначала позвольте мне показать вам образец текстового файла, который я буду использовать, чтобы проиллюстрировать grep
команда.
ИНДИЯ - ПРЕКРАСНАЯ СТРАНА МИРНО-ЛЮБИТЕЛЬСКИХ ЛЮДЕЙ. Индия стоит на трех столпах: законодательной, исполнительной и судебной. Индия - прекрасная страна миролюбивых людей. Индия заботится о людях, поскольку это ресурс декартовых координат, важность всех декартовых координат. Ниже приведены две пустые строки. Использование воловьей повозки - обычное дело в деревне для выполнения сельскохозяйственных работ. Это конец демонстрационного файла.
grep
используется с трубкой (|)полезность
grep
Команда может быть реализована вместе с другими командами Linux с помощью каналов оболочки. Например, используя Кот
команда для отображения содержимого файла, но в то же время конвейера вывода с помощью grep
команда для отображения только того контента, который вы хотите видеть. Это станет более ясным, когда мы рассмотрим пример.
Синтаксис:
[команда] | grep [строка]
Пример:
кот sample.txt | законодательный орган grep
Здесь я использовал Кот
команда для отображения некоторых строк из файла «sample.txt». Отображаются только те строки, которые содержат слово «законодательный орган», остальные строки игнорируются.
Вывод:
gaurav @ ubuntu: ~ / workspace $ cat sample.txt | grep законодательный орган Индии стоит на трех столпах: законодательной, исполнительной и судебной. gaurav @ ubuntu: ~ / рабочая область $
grep
используется без трубы (|)полезность
grep
можно даже использовать напрямую как отдельную команду без использования конвейера ( |
) полезность.
Синтаксис:
grep [string_to_be_searched] [имя файла]
Пример:
grep India sample.txt
Вывод:
Индия - прекрасная страна миролюбивых людей. Индия заботится о людях как о своих ресурсах
Таким образом, я использовал grep
непосредственно для фильтрации строк, содержащих строку «Индия», из текстового файла «sample.txt».
Поиск без учета регистра с использованием grep
команда
Linux очень осторожно относится к чувствительности к регистру, когда мы запускаем команды на терминале. Это требует, чтобы пользователь был осторожен с регистром строки, введенной в команду.
Давайте посмотрим на это на примере.
grep peace sample.txt
В этом случае мы не получим вывода, поскольку в образце файла нет слова «мир». У нас есть слово «Мир» с большой буквы. Слово то же самое, но когда мы используем grep
команда без какой-либо опции, она ищет точное совпадение в файле, игнорируя любые изменения в регистре букв.
Чтобы избежать этой двусмысленности, вы можете просто использовать -я
вариант, который буквально сообщает grep
команда «Забудьте о случае, когда я ввел строку, и просто ищите все подходящие шаблоны в файле».
Синтаксис:
grep -i [строка] [имя файла]
Пример:
grep -i Peace sample.txt
Вывод:
ИНДИЯ - ПРЕКРАСНАЯ СТРАНА МИРНО-ЛЮБИТЕЛЬСКИХ ЛЮДЕЙ. Индия - прекрасная страна миролюбивых людей.
Все совпадающие строки отображаются независимо от того, в каком случае находится соответствующая строка.
Рекурсивный поиск с использованием grep
команда
В -р
опция будет искать все файлы в каталоге и всех его подкаталогах, которые соответствуют строковому шаблону, предоставленному пользователем в команде.
Синтаксис:
grep -i -r [строка] [путь_файла]
Пример:
grep -i -r tomcat / home / gaurav / рабочая область
Строка здесь - «кот», и поиск по ней будет выполняться в рабочей области каталога. Все подкаталоги и файлы в каталоге «рабочая область» также будут просканированы на соответствие предоставленному строковому шаблону.
Вывод:
./context_log.policy:// catalina.policy - Разрешения политики безопасности для Tomcat 7./context_log.policy:// Примечание. Если tomcat-juli.jar находится в $ {catalina.base}, а не в $ {catalina.home }, ./context_log.policy:// grant codeBase "файл: $ {catalina.base} /bin/tomcat-juli.jar" {..} ./context_log.policy:grant codeBase "файл: $ {catalina.home } /bin/tomcat-juli.jar "{./context_log.policy: разрешение java.lang.RuntimePermission" accessClassInPackage.org.apache.tomcat.websocket.server "; ./context.xml: ./catalina.properties:# - Tomcat Bootstrap JAR ./catalina.properties:# - Tomcat API JAR ./catalina.properties:# - Tomcat JAR ./catalina.properties:# - Общие файлы, отличные от Tomcat Файлы JAR ./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:
ПРИМЕЧАНИЕ: При использовании -р
вариант с grep
команде нам нужно указать путь к файлу, а не имя файла
Искать целые слова только с grep
команда
Часто бывает так, что вы будете искать одно слово, но в конечном итоге заполните свой терминал совпадающими строками, которые действительно содержат ваше совпадающее слово, но не как отдельное слово. Вы можете увидеть строки, которые содержат некоторые слова, часть которых является введенной вами строкой.
Запутались с этим? Не волнуйтесь, это будет намного легче понять, если вы получите пример.
Пример:
Здесь я хочу найти отдельное слово «тележка» и отобразить все строки, соответствующие этому слову, в файле «sample.txt».
grep -i cart sample.txt
Вывод:
Важность декартовых координат всех декартовых координат. Использование воловьей повозки - обычное дело в деревне для выполнения сельскохозяйственных работ. Телега пропала, когда мальчик оставил ее на свободе.
В выводе вы можете заметить, что слово «декартово» также содержит слово «тележка» и, следовательно, строки, содержащие слово «декартово», также отображаются, даже если мы не хотим, чтобы они отображались.
Вы можете использовать -w
вариант с grep
команда, чтобы решить эту двусмысленность.
Синтаксис:
grep -i -w [строка] [имя файла]
Пример:
grep -i -w cart sample.txt
Вывод:
Использование воловьей повозки - обычное дело в деревне для выполнения сельскохозяйственных работ. Тележка пропала, когда мальчик оставил ее на свободе.
Теперь, когда вы использовали -ш
вариант с grep
вы получите только те строки, в которых слово «тележка» используется целиком.
Обратный поиск с использованием grep
команда
grep
Команда также может использоваться в обратном порядке. Мы можем использовать grep
наоборот, скрывая совпадающие строки и отображая только те строки, в которых совпадения не обнаружены. Вы можете сделать это с помощью -v
вариант с grep
команда.
Синтаксис:
grep -i -v [строка] [имя файла]
Пример:
grep -i -v resource sample.txt
Вывод:
ИНДИЯ - ПРЕКРАСНАЯ СТРАНА МИРНО-ЛЮБИТЕЛЬСКИХ ЛЮДЕЙ. Индия стоит на трех столпах: законодательной, исполнительной и судебной. Индия - прекрасная страна миролюбивых людей. декартовы координаты важность всех декартовых координат. Использование воловьей повозки - обычное дело в деревне для выполнения сельскохозяйственных работ. Это конец демонстрационного файла.
В выводе отображаются все остальные строки, кроме строки, содержащей слово «ресурс».
Подсчет вхождений совпадающей строки
Выход grep
Команда обычно очень длинная, если данные в файле обширны. Чем больше совпадений, тем длиннее выходы grep
команда. Linux предоставляет вам возможность отображать количество совпадений.
Синтаксис:
grep -i -c [строка] [имя файла]
Пример:
grep -i -c india sample.txt
Вывод:
gaurav @ ubuntu: ~ / workspace $ grep -i -c india sample.txt 4 gaurav @ ubuntu: ~ / workspace $
Здесь вывод представляет собой число, которое представляет собой количество появлений слова «Индия» в файле sample.txt.
ПРИМЕЧАНИЕ: Я использовал -я
вариант в каждом примере, чтобы быть в безопасности с проблемой чувствительности к регистру. Если вы точно знаете регистр искомого слова, то можете спокойно опустить -я
вариант.
Вывод
Мы узнали об основных способах использования grep
в системах Linux в этом руководстве. Мы также научились отображать различный контент, который наилучшим образом соответствует нашим требованиям, и не перегружать терминал множеством очередей. grep
Команда, безусловно, сэкономит время при сканировании больших наборов данных.