0

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

02.09.2022

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

Поиск и замена URL в MYSQL

Используйте сценарии MySQL для поиска и замены URL-адресов в базе данных Другой способ поиска и замены старых URL-адресов в базе данных – использование сценариев MySQL. Этот метод очень полезен, если у вас

POSTGRESQL 16 + CЕРВЕР 1С X64 И 1С 8.3.24

Для начала, в какой среде будем работать: Наша задача: Предполагается, что Debian на который мы установим как PostgreSQL так и Сервер 1С установлен (Установка по умолчанию). Для начала проверим «локаль»: Как видим

HADOOP

Hабор инструментов для разработки программ и обеспечения среды для их запуска в распределенной среде. Позволяет создавать большие кластеры и упрощает процесс управления ими. Является одним из элементов конвейеров обработки больших данных. Разработан на Java фондом Apache

Обновление mySQL с версии 5.7 до 8.0

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

11 советов по настройке файла wp-config.php

Скорость: Отключите сохраненные версии… Сейчас! Функция сохранения версий записей включена по умолчанию, но может привести к значительному “раздуванию” базы данных. Сохраненные версии существуют для того, чтобы вы могли откатиться к предыдущей версии записи,
Go toTop