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

Для начала скажу, что я зарабатываю через вот этого брокера, проверен он временем! А вот хороший пример заработка, человек зарабатывает через интернет МНОГО МНОГО МНОГО и показывает все на примерах, переходи и читай! Добавь страницу в закладки. А теперь читаете информацию ниже и пишите свой отзыв

Иногда может понадобится найти файл в котором содержится определенная строка или найти строку в файле, где есть нужное слово.

В Linux все это делается с помощью одной очень простой но в то же время мощной утилиты — grep. С помощью нее можно искать не только сроки в файлах, но и фильтровать вывод команд, а также многое другое.

В этой инструкции мы рассмотрим как выполняется поиск текста в файлах linux, подробно разберем возможные опции grep, а также приведем несколько примеров работы с этой утилитой.

Что такое grep?

Команда Grep, (расшифровывается как global regular expression print) одна из самых популярных команд в терминале Linux, которая входит в состав проекта GNU.

В первую очередь потому, что это очень мощная утилита, которая дает возможность пользователям сортировать и фильтровать текст на основе сложных правил.

Видео: 8.Linux для Начинающих — Команды: find, cut, sort, wc

Это позволяет применять ее для решения различных задач. Утилита 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 видео

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

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

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

В первом примере мы будем искать пользователя User в файле паролей Linux. Чтобы выполнить поиск текста grep в файле /etc/passwd введите следующую команду:

User:x:1000:1000:User,,,:/home/User:/bin/bash

А теперь не будем учитывать регистр во время поиска. Тогда комбинации ABC, abc и Abc с точки зрения программы будут одинаковы:

$ grep -A4 «EE» /var/log/xorg.0.log

Выведет строку с вхождением и 4 строчки после нее.

$ grep -C2 «EE» /var/log/xorg.0.log

Выведет по две строки с верху и снизу от вхождения.

Регулярные выражения в grep

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

Для активации этого режима используйте опцию -e. Рассмотрим несколько примеров:

Поиск вхождения в начале строки с помощью спецсимвола «^», например, выведем все сообщения за ноябрь:

  • 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

Поиск в конце строки, спецсимвол

  • «$»: Jul 12 17:01:09 cloneme kernel: Kernel log daemon terminating.
  • Oct 28 06:29:54 cloneme kernel: Kernel log daemon terminating.

Найдем все строки которые содержат цифры:

$ grep -r «mydomain.com» /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/

DocumentRoot /var/www/localhost/htdocs/zendsite

Поиск слов в grep

Когда вы ищете строку abc, grep будет выводить также kbabc, abc123, aafrabc32 и тому подобные комбинации. Вы можете заставить grep искать по содержимому файлов в linux только те строки, которые выключают искомые слова с помощью опции -w:

grep -w «abc» имя_файла

Поиск двух слов

Можно искать по содержимому файла не одно слово, а целых несколько. Чтобы искать два разных слова используйте команду egrep:

$ grep -c `word` /path/to/file

C помощью опции -n можно выводить номер строки в которой найдено вхождение, например:

1:root:x:0:0:root:/root:/bin/bash

Инвертированный поиск в grep

Команда grep linux может быть использована для поиска строк в файле Linux которые не содержат указанное слово.

Например, вывести только те строки, которые не содержат слово пар:

$ grep -l `primary` *.c

Цветной вывод в grep

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

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Оставить комментарий

Ваш email нигде не будет показанОбязательные для заполнения поля помечены *

*