0

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

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 smimrnov /home/passwd

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

/etc/passwd-:smirnov:x:1000:1000:Oleg Smirnov,,,:/home/smirnov:/bin/bash

Из данного вывода мы видим, что команда grep обнаружила в файле /etc/passwd пользователя smirnov и вывела сопутствующею информацию.

Поиск текста в файлах и директориях.

Давайте попробуем найти искомую комбинацию obu4alka.ru во всех файлах расположенных в директории /etc/nginx и её поддиректориях. Для этого нам необходимо воспользоваться рекурсивным поиском, опция -r:

grep -r "obu4alka.ru" /etc/nginx/

В выводе вы получим:

/etc/nginx/sites-available/obu4alka.ru.conf:    server_name obu4alka.ru *.obu4aka.ru;
/etc/nginx/sites-available/obu4alka.ru.conf:    root        /home/admin/www/obu4alka.ru/public_html;
/etc/nginx/sites-available/obu4alka.ru.conf:    access_log  /var/log/nginx/obu4alka.ru.access.log combined;
/etc/nginx/sites-available/obu4alka.ru.conf:    error_log   /var/log/nginx/obu4alka.ru.error.log error;
....

Поиск текста в файлах определенного слова.

Если вы ищете определённое слово в файлах, например mytext, то grep выведет также 123mytext, mytext123, 12mytext34 и тому подобные комбинации. Вы можете заставить утилиту искать по содержимому файлов в Linux только те строки, которые выключают искомые слова, воспользовавшись опцией -w:

grep -w "mytex" имя_файла

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

Можно искать по содержимому файла не одно слово, а сразу два:

egrep -w 'smirnov|root' /etc/passwd

Команда выдаст результат по двум запросам:

root:x:0:0:root:/root:/bin/bash
smirnov:x:1000:1000:Oleg Smirnov:/home/smirnov:/bin/bash

Вывод имени файла

Вы можете указать grep выводить только имя файла, в котором было найдено заданное слово с помощью опции -l. Например, следующая команда выведет все имена файлов, при поиске по содержимому которых было обнаружено вхождение function:

grep -l 'function' /home/admin/www/obu4alka.ru/public_html/*.php

Цветной вывод поиска в grep

Также вы можете заставить программу выделять другим цветом вхождения в выводе:

grep --color root /etc/passwd
root:x:0:0:root:/root:/bin/bash

Примеры использования grep

# вывести все данные на экран, кроме закомментированных строк cat ./file.txt | grep -v '^#'

# вывести все данные на экран, кроме пустых строк
cat ./file.txt | grep -v '^$'

# вы можете прочитать разом все файлы и сделать фильтр grep
cat * | grep 'текст для поиска'

# поиск по целому слову
egrep -w  "SELECT" *

поиск в списке файлов
ls -i | grep -i text

# рекурсивный поиск по всем папкам внутри родительской папки
grep -R text *
Облачная платформа

Свежие комментарии

Подписка

Лучшие статьи

Рубрики

Популярное

Previous Story

Подключить сетевой диск Windows в Linux

veem backup
Next Story

Создаем резервную копию сервера Windows с помощью Veeam Backup Agent

Latest from Blog

Docker: собираем веб сервер

Ниже предоставлен готовый набор окружения веб сервера на базе контейнеров Docker. Включает в себя MySQL, PHP, NGINX, composer, SSL сертификаты и механизм резервного копирования в облако. Код доступен на github. Компоненты сервера Для

Как с помощью docker запустить окружение для разработки nginx + php + mysql

Создание проекта Compose Подготовка контейнерной среды разработки веб-приложения отождествляется с созданием проекта Compose. Для этого начинать нужно с создания каталога проекта Compose.Его имя – new_compose_project. Создадим каталог, после чего перейдем к нему. Введем в

обновить Debian 11 до Debian 12 Bookworm

Подготовка системы к обновлению Перед обновлением рекомендую ознакомиться с официальным руководством Upgrades from Debian 11 (bullseye). Мои дальнейшие действия соответствуют некоторым рекомендациям из этого документа. В первую очередь проверьте все бэкапы. И по

Мониторинг докер-хостов, контейнеров и контейнерных служб

Я искал self-hosted мониторинговое решение с открытым кодом, которое может предоставить хранилище метрик, визуализацию и оповещение для физических серверов, виртуальных машин, контейнеров и сервисов, действующих внутри контейнеров. Опробовав Elastic Beats, Graphite и
Go toTop