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

ИТ База знаний

Курс по Asterisk

Полезно

— Узнать IP — адрес компьютера в интернете

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Калькулятор инсталляции IP — АТС Asterisk

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Руководство по команде grep в Linux

Читать между строк

10 минут чтения

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

Мини — курс по виртуализации

Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена

Про Linux за 5 минут | Что это или как финский студент перевернул мир?

  • Для чего мы пользуемся grep-ом?

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

    Возьмём команду ls. Сама по себе она выводит список всех файлов и папок.

    Но если нужно найти конкретную папку или один файл среди сотни других, то мы можем передать вывод команды ls в grep через вертикальную черту (|), а уже grep-у параметром передать нужное слово.

    Если команда grep ничего не вернула, значит искомого файла/папки не существует в данной директории.

    Поиск строк

    Если же нужно найти не одно слово, а словосочетание или целое предложение, то параметр команды grep должно быть выделено кавычками. Grep поддерживает как одинарные, так и двойные кавычки.

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

    В этом примере мы вели поиск указанных в кавычках слов в файле Students.txt и команда grep успешно справилась со своей задачей.

    Поиск по нескольким параметрам

    Команде grep можно передавать не один параметр, а несколько. Для этого перед каждым аргументом пишется ключ e. Эту команду система понимает, как «или-или» и выводит все вхождения указанных слов. Заметьте, что кавычками выделена только строка, которая содержит пробел.

    Разница между grep, egrep fgrep, pgrep, zgrep

    Исторически разные версии Linux-а включали разновидности команды grep. Хотя в современных версия систем базовая команда grep поддерживает все возможности, которыми обладают egrep fgrep, pgrep, zgrep, но все же их тоже стоит рассмотреть.

    Как видно из вывода man grep (мануал по команде grep), все эти версии всего лишь разные названия основной команды. Например, egrep это тоже самое, что и grep E (помните, командная строка Linux регистрозависимая и команды grep e и grep E интерпретируются по разному). Этой команде в качестве шаблона передается расширенное регулярное выражение. Существует очень много разных ситуаций, где можно воспользоваться этой командой. Например, две команды ниже эквивалентны и выводят все строки, в которых есть две подряд идущих буквы «p».

    Читайте также:  Windows process memory management

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

    Команда pgrep используется для поиска конкретного процесса, запущенного в системе и возвращает идентификатор указанного процесса (PID). Команда ниже выводит PID процесса sshd. Почти такого же результата можно достичь если запустить команду ps e | grep sshd.

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

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

    Разница между find и grep

    Те, кто только начинает пользоваться командной строкой Linux должны понимать, что find и grep это две разные команды, которые имеют совсем разные функции, даже если оба используются для «поиска» чего-либо.

    При поиске файлов grep-ом удобно пользоваться для фильтрации вывода команды find, как и было показано в начале материала. Но если нужно найти какой-то файл в системе по его названию или части названия (при этом используется маска *), то лучше всего обратиться к find. Она выведёт точно расположение искомого файла.

    Рекурсивный поиск

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

    Найти пробелы и табуляцию

    Как и было отмечено ранее, если в шаблоне поиска содержится пробел, то мы должны выделять строку кавычками. Это мы можем использовать для поиска пробелов и знаков табуляции в файле. О том как вставить табуляцию чуть позже.

    Есть несколько путей вставки табуляции, но некоторые дистрибутивы могут не поддерживать их. Как известно, в командной строке Linux клавиша TAB сама по себе дополняет введённую команду. Но если комбинировать клавиши ctrl+v, а затем нажать TAB, то система воспримет это как знак табуляции. $ grep » » sample.txt

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

    Использование регулярных выражений

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

    [квадратные скобки] они используются чтобы проверить на соответствие одному из указанных символов.

    [-] знак дефиса означает диапазон значений. Это могут быть как буквы, так и цифры.

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

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

    [^] но между квадратными скобками смысл каретки меняется. Здесь он исключает из поиска следующие за ней символы или диапазон символов.

    $ знак доллара означает конец строки. Команда выведет только те строки, в конце которых встречает указанный шаблон.

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

    Источник

    Что такое grep и с чем его едят

    Эта заметка навеяна мелькавшими последнее время на хабре постами двух тематик — «интересные команды unix» и «как я подбирал программиста». И описываемые там команды, конечно, местами интересные, но редко практически полезные, а выясняется, что реально полезным инструментарием мы пользоваться и не умеем.
    Небольшое лирическое отступление:
    Года три назад меня попросили провести собеседование с претендентами на должность unix-сисадмина. На двух крупнейших на тот момент фриланс-биржах на вакансию откликнулись восемь претендентов, двое из которых входили в ТОП-5 рейтинга этих бирж. Я никогда не требую от админов знания наизусть конфигов и считаю, что нужный софт всегда освоится, если есть желание читать, логика в действиях и умение правильно пользоваться инструментарием системы. Посему для начала претендентам были даны две задачки, примерно такого плана:
    — поместить задание в крон, которое будет выполняться в каждый чётный час и в 3 часа;
    — распечатать из файла /var/run/dmesg.boot информацию о процессоре.

    Читайте также:  Activators windows 10 ltsb

    К моему удивлению никто из претендентов с обоими вопросами не справился. Двое, в принципе, не знали о существовании grep.

    Поэтому… Лето… Пятница… Перед шашлыками немного поговорим о grep.

    Зная местную публику и дабы не возникало излишних инсинуаций сообщаю, что всё нижеизложенное справедливо для

    Это важно в связи с

    Для начала о том как мы обычно grep’аем файлы.
    Используя cat:

    Но зачем? Ведь можно и так:

    Или вот так (ненавижу такую конструкцию):

    Зачем-то считаем отобранные строки с помощью wc:

    Сделаем тестовый файлик:

    И приступим к поискам:
    Опция -w позволяет искать по слову целиком:

    А если нужно по началу или концу слова?

    Стоящие в начале или конце строки?

    Хотите увидеть строки в окрестности искомой?

    Только снизу или сверху?

    А ещё мы умеем так

    И наоборот исключая эти

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

    Отбираем только строки с ip:

    Работает, но так симпатичнее:

    Уберём строку с комментарием?

    А теперь выберем только сами ip

    Вот незадача… Закомментированная строка вернулась. Это связано с особенностью обработки шаблонов. Как быть? Вот так:

    Здесь остановимся на инвертировании поиска ключом -v
    Допустим нам нужно выполнить «ps -afx | grep ttyv»

    Всё бы ничего, но строка «48798 2 S+ 0:00.00 grep ttyv» нам не нужна. Используем -v

    Некрасивая конструкция? Потрюкачим немного:

    Также не забываем про | (ИЛИ)

    ну и тоже самое, иначе:

    Ну и если об использовании регулярок в grep’e помнят многие, то об использовании POSIX классов как-то забывают, а это тоже иногда удобно.

    Отберём строки с заглавными символами:

    Плохо видно что нашли? Подсветим:

    Ну и ещё пару трюков для затравки.
    Первый скорее академичный. За лет 15 ни разу его не использовал:
    Нужно из нашего тестового файла выбрать строки содержащие six или seven или eight:
    Пока всё просто:

    А теперь только те строки в которых six или seven или eight встречаются несколько раз. Эта фишка именуется Backreferences

    Ну и второй трюк, куда более полезный. Необходимо вывести строки в которых 504 с обеих сторон ограничено табуляцией.
    Ох как тут не хватает поддержки PCRE…
    Использование POSIX-классов не спасает:

    На помощь приходит конструкция [CTRL+V][TAB]:

    Что ещё не сказал? Разумеется, grep умеет искать в файлах/каталогах и, разумеется, рекурсивно. Найдём в исходниках код, где разрешается использование Intel’ом сторонних SFP-шек. Как пишется allow_unsupported_sfp или unsupported_allow_sfp не помню. Ну да и ладно — это проблемы grep’а:

    Надеюсь не утомил. И это была только вершина айсберга grep. Приятного Вам чтения, а мне аппетита на шашлыках!
    Ну и удачного Вам grep’a!

    Источник

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

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

    Команда grep используется для поиска текста. Он ищет в данном файле строки, содержащие совпадения с заданными строками или словами. Это одна из самых полезных команд в Linux и Unix-подобных системах. Давайте посмотрим, как использовать grep в Linux или Unix-подобных системах

    Вы знали?

    Название «grep» происходит от команды, используемой для выполнения аналогичной операции с использованием текстового редактора Unix / Linux. Ed: Утилиты grep — это семейство, которое включает в себя grep, egrep и fgrep для поиска. В большинстве случаев вам нужно использовать fgrep, поскольку он самый быстрый и просматривает только строки и слова. Однако набрать grep легко. Следовательно, это личный выбор.
    g/re/p

    Читайте также:  Base64 decode linux command

    Примеры команды grep в Linux и Unix

    Ниже приведены некоторые стандартные команды grep, объясненные с примерами, которые помогут вам начать работу с grep в Linux, macOS и Unix:

    1. Найдите любую строку, которая содержит слово в имени файла в Linux: grep ‘word’ filename
    2. Выполните поиск слова ‘bar’ без учета регистра в Linux и Unix: grep -i ‘bar’ file1
    3. Найдите все файлы в текущем каталоге и во всех его подкаталогах в Linux по слову httpd: grep -R ‘httpd’ .
    4. Найдите и отобразите общее количество раз, когда строка ‘nixcraft’ появляется в файле с именем frontpage.md:: grep -c ‘nixcraft’ frontpage.md

    Давайте подробно рассмотрим все команды и параметры.

    Синтаксис

    Синтаксис grep следующий:

    grep ‘word’ filename
    fgrep ‘word-to-search’ file.txt
    grep ‘word’ file1 file2 file3
    grep ‘string1 string2’ filename
    cat otherfile | grep ‘something’
    command | grep ‘something’
    command option1 | grep ‘data’
    grep —color ‘data’ fileName
    grep [-options] pattern filename
    fgrep [-options] words file

    Как мне использовать grep для поиска файла в Linux?

    Найдите /etc/passwd для пользователя boo, введите:
    grep boo /etc/passwd
    Примеры выходных данных::

    Мы можем использовать fgrep/grep тобы найти все строки файла, содержащие определенное слово. Например, чтобы перечислить все строки файла с именем address.txt в текущем каталоге, которые содержат слово “California” выполните:
    fgrep California address.txt
    Обратите внимание, что приведенная выше команда также возвращает строки, в которых “California” является частью других слов, например “Californication” или “Californian”. Следовательно, передайте -w параметр с помощью команды grep/fgrep чтобы получить только строки, в которых “California” включено как целое слово:
    fgrep -w California address.txt
    Вы можете заставить grep игнорировать регистр слов, то есть сопоставить boo, Boo, BOO и все другие комбинации с -i параметром. Например, введите следующую команду:
    grep -i «boo» /etc/passwd

    Последнийgrep -i «boo» /etc/passwd может работать следующим образом с помощью:
    cat /etc/passwd | grep -i «boo»

    Как использовать grep рекурсивно

    Вы можете выполнять поиск рекурсивно, т.е. читать все файлы в каждом каталоге по строке “192.168.1.5”
    $ grep -r «192.168.1.5» /etc/
    ИЛИ
    $ grep -R «192.168.1.5» /etc/
    Примеры выходных данных:

    Вы увидите результат для 192.168.1.5 в отдельной строке, перед которой будет указано имя файла (например /etc/ppp/options) в котором он был найден. Включение имен файлов в выходные данные можно подавить, используя -h следующее:
    $ grep -h -R «192.168.1.5» /etc/
    ИЛИ
    $ grep -hR «192.168.1.5» /etc/
    Примеры выходных данных:

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

    Когда вы ищете boo, grep будет соответствовать fooboo, boo123, barfoo35 и другим. Вы можете заставить команду grep выбирать только те строки, содержащие совпадения, которые образуют целые слова, т.е. соответствуют только boo word:
    $ grep -w «boo» file

    Как использовать grep для поиска двух разных слов

    Используйте команду egrep следующим образом:
    $ egrep -w ‘word1|word2’ /path/to/file

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

    Мы можем заставить grep игнорировать различия в регистрах в шаблонах и данных. Например, когда я ищу «bar», соответствую «BAR», «Bar», «BaR»
    $ grep -i ‘bar’ /path/to/file
    В этом примере я собираюсь включить все подкаталоги в поиск:
    $ grep -r -i ‘main’

    Как я могу посчитать строку, когда слова совпали

    Команда grep может сообщить, сколько раз шаблон был сопоставлен для каждого файла, используя -c (count) опцию:
    $ grep -c ‘word’ /path/to/file
    Передайте -n опцию, которая должна предшествовать каждой строке вывода с номером строки в текстовом файле, из которого он был получен:
    $ grep -n ‘root’ /etc/passwd

    Вывод

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

    Источник

  • Оцените статью