- Команда grep в Linux
- Синтаксис
- Примеры
- ПОИСК ПО СОДЕРЖИМОМУ ФАЙЛОВ — СИНТАКСИС GREP
- ЧТО ТАКОЕ GREP?
- СИНТАКСИС GREP
- ОПЦИИ
- ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ
- ПОИСК ТЕКСТА В ФАЙЛАХ
- ВЫВЕСТИ НЕСКОЛЬКО СТРОК
- РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ В GREP
- РЕКУРСИВНОЕ ИСПОЛЬЗОВАНИЕ GREP
- ПОИСК СЛОВ В GREP
- ПОИСК ДВУХ СЛОВ
- КОЛИЧЕСТВО ВХОЖДЕНИЙ СТРОКИ
- ИНВЕРТИРОВАННЫЙ ПОИСК В GREP
- ВЫВОД ИМЕНИ ФАЙЛА
- ЦВЕТНОЙ ВЫВОД В GREP
- ВЫВОДЫ
- Поиск текста в файлах на LINUX
- ОПЦИИ
- Примеры использования
- Поиск текста в файле
- Поиск текста в файлах и директориях.
- Поиск текста в файлах определенного слова.
- Поиск текста в файлах двух слов
- Вывод имени файла
- Цветной вывод поиска в grep
- Примеры использования grep
Команда grep в Linux
Часто требуется найти в файле кусок текста или вывести на экран только часть информации, в этом нам поможет простая, но очень популярная утилита grep. Наиболее часто ее используют совместно с другими командами, добавив вертикальную черту «|» и название команды grep.
Утилита входит в состав GNU, решает много задач, она может вывести на экран отсортированный текст, а также находить строки в больших файлах за миллисекунды.
Синтаксис
grep [параметры] шаблон [имя файла]
Команда | grep шаблон
Здесь под параметрами понимаются аргументы, с помощью которых настраивается поиск и вывод на экран. Например нужно найти слово «линукс», и не учитывать регистр при поиске. Тогда нужно использовать опцию «-i».
Шаблон — это выражение или строка.
Имя файла — где искать.
—help. Вывести справочную информацию.
-i. Не учитывать регистр при поиске.
-V. Узнать текущую версию.
-v. Инвертированный поиск.
-s. Не выводить на экран сообщения об ошибкам. Например сообщение о несуществующих файлах.
-r. Поиск в каталогах, подкаталогах или рекурсивный grep.
-w. Искать как слово с пробелами.
-с. Опция считает количество вхождений (счетчик).
-e. Регулярные выражения.
Примеры
Найдем все файлы в текущей директории где встречается слово «linux».
- linux — слово которое нужно искать;
- точка — текущая директория;
- звездочка — искать во всех файлах.
Важно! По умолчанию операционная система Линукс учитывает регистр. То есть, если слово написано с большой буквы, а в поиске указано с маленькой, то grep его не найдет.
Чтобы начать поиск без учета регистра необходимо добавить аргумент «-i». В нашем примере получится так:
Поиск в конкретном документе. Для примера найдем в документе «test» слово «хороший». Для этого с помощью утилиты «cd» зайдем в текущую директорию, где лежит файл «test». В моем случаи он находится в домашнем каталоге, я ввожу просто «cd».
Здесь:
- хороший — слово которое нужно найти;
- test — файл, где искать.
Рекурсивный поиск. Чтобы найти определенный текст в определенной директории, используют рекурсивный поиск. Для этого необходимо использовать параметр «-r». Найдем слово «vseprolinux» в домашнем каталоге root и его подкаталогах.
Найдем три слова сразу в одной строке «все про Линукс». Для этого будем использовать вертикальную черту и введет «grep» три раза.
Команда grep может сообщить сколько раз встречается слово. Нам поможет опция -с. Посчитаем сколько раз встречается слово «site» в документе «file».
Как видно на скриншоте выше, в файле «file» три раза встречается слово «site». Однако команда также считает выражение «mysite» за «site». Как сделать чтобы mysite не попал под счетчик? Добавим опцию «-w.»
Для большей уверенности иногда слово «site» можно заключить кавычки, например когда нужно найти строку с пробелом.
Регулярные выражение в утилите «grep» — это мощная функция, которая расширяет возможности поиска. Чтобы активировать эту функцию или режим, используется аргумент «-e».
Символы в выражениях:
- $ — конец строки;
- ^ — начало строки;
- [] — указывается диапазон значений или конкретные через запятую.
Найдем цифры 1-5 в документе «file».
В скобках написано диапазон значений от одного до пяти, также можно написать конкретные значения через запятую, так: [1,2,3,4,5]
Источник
ПОИСК ПО СОДЕРЖИМОМУ ФАЙЛОВ — СИНТАКСИС GREP
ЧТО ТАКОЕ GREP?
Команда Grep, (расшифровывается как global regular expression print) одна из самых популярных команд в терминале Linux, которая входит в состав проекта GNU. В первую очередь потому, что это очень мощная утилита, которая дает возможность пользователям сортировать и фильтровать текст на основе сложных правил.
Это позволяет применять ее для решения различных задач. Утилита grep, в основном, используется для поиска строк, соответствующих строке в тексте или содержимом файлов. Также она может быть использована для поиска по шаблону или регулярным выражениям. С помощью нее удобно в считаные секунды найти файл в файловой системе с нужной строчкой, найти текст в файле или отфильтровать из вывода команды только пару нужных строк. А теперь давайте рассмотрим как пользоваться командой.
СИНТАКСИС GREP
Синтаксис команды выглядит следующим образом:
$ grep [опции] шаблон [имя файла…]
$ команда | grep [опции] шаблон
- Опции — это дополнительные параметры, с помощью которых указывается различные настройки, поиска и вывода, например количество строк или режим инверсии.
- Шаблон — это любая строка или регулярное выражение, по которому будет вестись поиск
- Файл и команда — это то место где будет вестись поиск. Как вы увидите дальше grep позволяет искать в нескольких файлах и даже в каталоге используя рекурсивный режим.
Как видите grep умеет не только выполнять поиск в файлах linux, но и может фильтровать стандартный вывод, это очень удобная функция, когда нужно выбрать только ошибки из логов или найти PID процесса в многочисленном выводе утилиты ps.
ОПЦИИ
Давайте рассмотрим самые основные опции утилиты, которые помогут более эффективно выполнять поиск текста в файлах grep:
- -b — показывать номер блока перед строкой;
- -c — подсчитать количество вхождений шаблона;
- -h — не выводить имя файла в результатах поиска внутри файлов Linux;
- -i — не учитывать регистр;
- — l — отобразить только имена файлов, в которых найден шаблон;
- -n — показывать номер строки в файле;
- -s — не показывать сообщения об ошибках;
- -v — инвертировать поиск, выдавать все строки кроме тех что содержат шаблон;
- -w — искать шаблон, как слово, окруженное пробелами;
- -e — использовать регулярные выражения при поиске;
- -An — показать вхождение и n строк до него;
- -Bn — показать вхождение и n строк после него;
- -Cn — показать n строк до и после вхождения;
Все самые основные опции рассмотрели, и даже больше, теперь перейдем к примерам работы команды grep linux.
ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ
С теорией покончено, теперь перейдем к практике. Рассмотрим несколько основных примеров поиска внутри файлов Linux с помощью grep, которые могут вам понадобиться в повседневной жизни.
ПОИСК ТЕКСТА В ФАЙЛАХ
В первом примере мы будем искать пользователя User в файле паролей Linux. Чтобы выполнить поиск текста grep в файле /etc/passwd введите следующую команду:
grep User /etc/passwd
В результате вы получите что-то вроде этого, если, конечно, существует такой пользователь:
А теперь не будем учитывать регистр во время поиска. Тогда комбинации ABC, abc и Abc с точки зрения программы будут одинаковы:
grep -i «user» /etc/passwd
ВЫВЕСТИ НЕСКОЛЬКО СТРОК
Например, мы хотим выбрать все ошибки из лог файла, но знаем что в следующей сточке после ошибки может содержаться полезная информация, тогда с помощью grep отобразим несколько строк, ошибки будем искать в Xorg.log по шаблону «EE»:
grep -A4 «EE» /var/log/xorg.0.log
Выведет строку с вхождением и 4 строчки после нее.
grep -B4 «EE» /var/log/xorg.0.log
Выведет целевую строку и 4 строчки до нее
grep -C2 «EE» /var/log/xorg.0.log
Выведет по две строки с верху и снизу от вхождения.
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ В GREP
Регулярные выражения grep — очень мощный инструмент в разы расширяющий возможности поиска текста в файлах grep. Для активации этого режима используйте опцию -e. Рассмотрим несколько примеров:
Поиск вхождения в начале строки с помощью спецсимвола «^», например, выведем все сообщения за ноябрь:
grep «^Nov 10» messages.1
Nov 10 01:12:55 gs123 ntpd[2241]: time reset +0.177479 s
Nov 10 01:17:17 gs123 ntpd[2241]: synchronized to LOCAL(0), stratum 10
Поиск в конце строки, спецсимвол «$»:
grep «terminating.$» messages
Jul 12 17:01:09 cloneme kernel: Kernel log daemon terminating.
Oct 28 06:29:54 cloneme kernel: Kernel log daemon terminating.
Найдем все строки которые содержат цифры:
grep «2» /var/log/Xorg.0.log
Вообще, регулярные выражения grep это очень обширная тема, в этой статье я лишь показал несколько примеров, чтобы дать вам понять что это. Как вы увидели, таким образом, поиск текста в файлах grep становиться еще гибче. Но на полное объяснение этой темы нужна целая статья, поэтому пока пропустим их и пойдем дальше.
РЕКУРСИВНОЕ ИСПОЛЬЗОВАНИЕ GREP
Если вам нужно провести поиск текста grep в нескольких файлах, размещенных в одном каталоге или подкаталогах, например, в файлах конфигурации Apache — /etc/apache2/ — используйте рекурсивный поиск. Для включения рекурсивного поиска в grep есть опция -r. Следующая команда займется поиском текста в файлах Linux во всех подкаталогах /etc/apache2 на предмет вхождения строки mydomain.com:
grep -r «mydomain.com» /etc/apache2/
В выводе вы получите:
grep -r «zendsite» /etc/apache2/
/etc/apache2/vhosts.d/zendsite_vhost.conf: ServerName zendsite.localhost
/etc/apache2/vhosts.d/zendsite_vhost.conf: DocumentRoot /var/www/localhost/htdocs/zendsite
/etc/apache2/vhosts.d/zendsite_vhost.conf:
Здесь перед найденной строкой указано имя файла в котором она была найдена. Вывод имени файла легко отключить с помощью опции -h:
grep -h -r «zendsite» /etc/apache2/
ServerName zendsite.localhost
DocumentRoot /var/www/localhost/htdocs/zendsite
ПОИСК СЛОВ В GREP
Когда вы ищете строку abc, grep будет выводить также kbabc, abc123, aafrabc32 и тому подобные комбинации. Вы можете заставить grep искать по содержимому файлов в linux только те строки, которые выключают искомые слова с помощью опции -w:
grep -w «abc» имя_файла
ПОИСК ДВУХ СЛОВ
Можно искать по содержимому файла не одно слово, а целых несколько. Чтобы искать два разных слова используйте команду egrep:
egrep -w ‘word1|word2’ /path/to/file
КОЛИЧЕСТВО ВХОЖДЕНИЙ СТРОКИ
Утилита Grep может сообщить сколько раз определенная строка была найдена в каждом файле. Для этого используется опция -c (счетчик):
grep -c ‘word’ /path/to/file
C помощью опции -n можно выводить номер строки в которой найдено вхождение, например:
grep -n ‘root’ /etc/passwd
ИНВЕРТИРОВАННЫЙ ПОИСК В GREP
Команда grep linux может быть использована для поиска строк в файле Linux которые не содержат указанное слово. Например, вывести только те строки, которые не содержат слово пар:
grep -v пар /path/to/file
ВЫВОД ИМЕНИ ФАЙЛА
Вы можете указать grep выводить только имя файла в котом было найдено заданное слово с помощью опции -l. Например, следующая команда выведет все имена файлов, при поиске по содержимому которых было обнаружено вхождение primary:
grep -l ‘primary’ *.c
ЦВЕТНОЙ ВЫВОД В GREP
Также вы можете заставить программу выделять другим цветом вхождения в выводе:
grep —color root /etc/passwd
ВЫВОДЫ
Вот и все. Мы рассмотрели все что касается использования команды grep для осуществления поиска и фильтрации вывода команд в операционной системе Linux. При правильном применении эта утилита станет мощным инструментом в ваших руках. Если у вас остались вопросы, пишите в комментариях!
Источник
Поиск текста в файлах на LINUX
Сегодня в статье рассмотрим как можно выполнить поиск текста в файлах на Linux.
Возникаю такие ситуации, когда необходимо найти текст в файле или же какой либо файл. В Linux всё это делается с помощью незаменимой утилиты grep. С помощью данной утилиты можно искать текст в файлах, фильтровать вывод команд и много чего ещё.
grep (global regular expression print) — одна из самых востребованных команд в терминале Linux, которая входит в состав проекта GNU. Grep в считанные секунды найдёт файл, или текст в файле, или отфильтрует вывода другой утилиты.
ОПЦИИ
Давайте рассмотрим самые основные опции утилиты grep, которые помогут нам выполнять поиск текста в файлах:
- -b — показывать номер блока перед строкой;
- -c — подсчитать количество вхождений шаблона;
- -h — не выводить имя файла в результатах поиска внутри файлов Linux;
- -r — рекурсивный поиск;
- -i — не учитывать регистр;
- — l — отобразить имена файлов, в которых найден шаблон;
- -n — показывать номер строки в файле;
- -s — не показывать сообщения об ошибках;
- -v — инвертировать поиск, выдавать все строки кроме тех, что содержат шаблон;
- -w — искать шаблон как слово, окружённое пробелами;
- -e — использовать регулярные выражения при поиске;
- -An — показать вхождение и n строк до него;
- -Bn — показать вхождение и n строк после него;
- -Cn — показать n строк до и после вхождения.
Примеры использования
Давайте рассмотрим несколько примеров поиска текста внутри файлов с помощью grep.
Поиск текста в файле
В первом примере мы будем искать пользователя smirnov в файле расположенных по пути /home/passwd :
Данная команда выдаст приблизительно вот такой результат:
Из данного вывода мы видим, что команда grep обнаружила в файле /etc/passwd пользователя smirnov и вывела сопутствующею информацию.
Поиск текста в файлах и директориях.
Давайте попробуем найти искомую комбинацию obu4alka.ru во всех файлах расположенных в директории /etc/nginx и её поддиректориях. Для этого нам необходимо воспользоваться рекурсивным поиском, опция -r:
В выводе вы получим:
Поиск текста в файлах определенного слова.
Если вы ищете определённое слово в файлах, например mytext, то grep выведет также 123mytext, mytext123, 12mytext34 и тому подобные комбинации. Вы можете заставить утилиту искать по содержимому файлов в Linux только те строки, которые выключают искомые слова, воспользовавшись опцией -w:
Поиск текста в файлах двух слов
Можно искать по содержимому файла не одно слово, а сразу два:
Команда выдаст результат по двум запросам:
Вывод имени файла
Вы можете указать grep выводить только имя файла, в котором было найдено заданное слово с помощью опции -l. Например, следующая команда выведет все имена файлов, при поиске по содержимому которых было обнаружено вхождение function :
Цветной вывод поиска в grep
Также вы можете заставить программу выделять другим цветом вхождения в выводе:
Примеры использования grep
Сегодня мы с вами рассмотрели использование команды grep для поиска и фильтрации вывода команд в операционной системе Linux. При правильном применении эта утилита станет мощным инструментом в ваших руках.
Если есть вопросы, то пишем в комментариях.
Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.
Источник