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

How to set up WireGuard Client on Debian?

WireGuard is an extremely simple yet fast and modern VPN. Setting up the WireGuard VPN client on Debian is straightforward. In this tutorial, we will set up WireGuard VPN client on Debian

Перенос БД из MariaDB/MySQL в PostgreSQL с помощью pgLoader

Краткая инструкция об очень интересном и полезном инструменте pgLoader, который позволяет легко мигрировать базу данных MariaDB или MySQL в PostgreSQL. Для начала нам понадобится развернуть небольшой стенд, к примеру, на Debian GNU/Linux,

Миграция с MySQL на PostgreSQL

Зачем мигрировать Первый вопрос, который обычно возникает, — зачем мигрировать с MySQL на PostgreSQL при использовании Zabbix. Вариантов не так много, особенно если система уже работает и работает неплохо. Возможные причины для
Go toTop