- ПОИСК ПО СОДЕРЖИМОМУ ФАЙЛОВ — СИНТАКСИС GREP
- ЧТО ТАКОЕ GREP?
- СИНТАКСИС GREP
- ОПЦИИ
- ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ
- ПОИСК ТЕКСТА В ФАЙЛАХ
- ВЫВЕСТИ НЕСКОЛЬКО СТРОК
- РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ В GREP
- РЕКУРСИВНОЕ ИСПОЛЬЗОВАНИЕ GREP
- ПОИСК СЛОВ В GREP
- ПОИСК ДВУХ СЛОВ
- КОЛИЧЕСТВО ВХОЖДЕНИЙ СТРОКИ
- ИНВЕРТИРОВАННЫЙ ПОИСК В GREP
- ВЫВОД ИМЕНИ ФАЙЛА
- ЦВЕТНОЙ ВЫВОД В GREP
- ВЫВОДЫ
- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Рекурсивно найти слово в файлах и папках Linux
- Найти фразу в файлах рекурсивно через консоль
- Поиск слова через Midnight Commander
- Поиск текста в файлах Linux
- Способ 1: Текстовые редакторы с графическим интерфейсом
- Способ 2: Редакторы конфигурационных файлов с GUI
- Способ 3: Консольные редакторы
- Способ 4: Утилита grep
ПОИСК ПО СОДЕРЖИМОМУ ФАЙЛОВ — СИНТАКСИС 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 «7» /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. При правильном применении эта утилита станет мощным инструментом в ваших руках. Если у вас остались вопросы, пишите в комментариях!
Источник
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Рекурсивно найти слово в файлах и папках Linux
Великая сила grep
2 минуты чтения
Дистрибутив Linux, несмотря на версию и вид, имеет множество графических оболочек, которые позволяют искать файлы. Большинство из их них позволяют искать сами файлы, но, к сожалению, они редко позволяют искать по содержимому. А особенно рекурсивно. В статье покажем два способа того, как можно рекурсивно найти файлы, которые содержат ту или иную фразу. Поиск будет осуществлен по папкам и директориям внутри этих папок.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Найти фразу в файлах рекурсивно через консоль
Все просто. Открываем серверную консоль, подключившись по SSH. А далее, вводим команду:
Например, команда может выглядеть вот так:
Команда найдет и выведет все файлы, которые содержат фразу merionet в директории /home/user/merion и во всех директориях, внутри этой папки. Мы используем следующие ключи:
- -i — игнорировать регистра текста (большие или маленькие буквы);
- -R — рекурсивно искать файлы в сабдиректориях;
- -I — показывать названия файлов, вместо их содержимого;
Так же, вам могут быть полезны следующие ключи:
- -n — показать номер строки, в которой находится фраза;
- -w — показать место, где слово попадается;
Поиск слова через Midnight Commander
Так же, в консоли сервера, дайте команду:
Эта команда запустит Midnight Commander. Кстати, если он у вас не установлен, его можно просто установить через yum:
Открыв mc, во вкладке Command выберите Find File и заполните поисковую форму как показано ниже:
- Start at: — директория, где нужно осуществлять поиск;
- File name: — маска поиска. Например, искать только в файлах расширения txt будет — *.txt;
- Content — сама фраза;
Нажимаем OK и получаем результат:
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Источник
Поиск текста в файлах Linux
Способ 1: Текстовые редакторы с графическим интерфейсом
В Linux, как и в других операционных системах, имеются различные текстовые редакторы, реализованные с графическим интерфейсом. В большинстве случаев они задействованы пользователем при составлении документов. Поэтому в качестве первого способа мы и предлагаем затронуть тему как раз таких программ, что позволит начинающим юзерам освоиться в них и понять, каким же образом происходит поиск текста в файлах.
- В первую очередь откройте файловый менеджер, чтобы отыскать через него необходимый объект.
Щелкните по нему правой кнопкой мыши для вызова контекстного меню и откройте через установленный по умолчанию редактор или выберите пункт «Открыть в другом приложении».
После открытия файла через удобный редактор остается только отыскать раздел «Правка».
В нем присутствует опция «Найти», именно она и интересует нас сейчас. Чаще всего ее же можно вызвать и через стандартную комбинацию клавиш Ctrl + F.
Обычно при нахождении совпадений фрагменты выделяются в тексте, а также по результатам можно удобно перемещаться с помощью виртуальных кнопок в виде стрелок.
Только что в качестве примера мы взяли стандартный текстовый редактор LibreOffice. Если в используемом дистрибутиве установлена другая программа или вы предпочитаете взаимодействовать с похожими аналогами, принцип выполнения поставленной задачи практически ничем не отличается от увиденного только что. При возникновении проблем с поиском раздела «Правка» попробуйте нажать комбинацию Ctrl + F, чтобы открыть строку поиска.
Способ 2: Редакторы конфигурационных файлов с GUI
Отдельно хотелось бы упомянуть небольшие утилиты с графическим интерфейсом, чья основная функциональность сосредоточена на редактировании конфигурационных файлов. Это не совсем текстовые редакторы, однако они отображают содержимое объектов именно в таком виде. Давайте возьмем за пример стандартное средство многих дистрибутивов под названием gedit.
- Для начала потребуется запустить консоль. Сделайте это через меню приложений или нажатием на горячую клавишу Ctrl + Alt + T.
Введите команду gedit /etc/ssh/sshd_config , где /etc/ssh/sshd_config замените на путь к необходимому объекту.
Активируйте команду нажатием на клавишу Enter и дождитесь отображения нового окна. Здесь разверните меню с параметрами.
Отыщите пункт «Найти» и кликните по нему.
Осталось только ввести содержимое в появившуюся строку и ознакомиться с полученными результатами, которые будут подсвечены оранжевым цветом.
В ситуации с остальными похожими программами для изменения конфигурационных файлов принцип поиска содержимого остается аналогичным, а также в большинстве случаев активировать строку можно нажатием на уже упомянутую горячую клавишу Ctrl + F.
Способ 3: Консольные редакторы
Существуют специальные консольные утилиты, выполняющие роль редакторов файлов. У них отсутствует собственный графический интерфейс, а все содержимое выводится прямо в «Терминале». Через них поиск текста тоже прекрасно осуществим, а на примере известного nano предлагаем остановиться в рамках этой статьи.
- Используйте команду nano + расположение файла , чтобы открыть его для произведения поиска или редактирования. Если вы присваиваете этой строке аргумент sudo, дополнительно придется ввести пароль root-доступа для успешной активации команды.
Обычно в таких редакторах присутствует описание кнопок или же все сведения находятся в официальных документациях. Если рассматривать конкретно nano, строка поиска вызывается путем нажатия сочетания Ctrl + W.
В самой строке остается только напечатать слово или словосочетание, а затем кликнуть на Enter для отображения результатов.
Курсор сразу же переместится на подходящую строку и вы сможете ознакомиться с ней.
Существует еще множество похожих программ на те, которые были перечислены выше. Одни имеют графический интерфейс, а другие реализованы через консоль, однако это не мешает использовать их для поиска текста в файлах. Если вы еще не определились, какое решение хотите задействовать, советуем изучить список лучшего ПО, перейдя по указанной далее ссылке.
Способ 4: Утилита grep
В качестве последнего способа сегодняшнего материала хотим рассмотреть известную многим стандартную утилиту grep. Она стала популярной благодаря своей мощности, что позволяет удобно сортировать содержимое файлов по разным параметрам. В возможности этого решения входит и поиск текста, что выглядит следующим образом.
- В «Терминале» введите grep + содержание_для_поиска + путь_к_файлу , а затем нажмите Enter. Учитывайте, что при применении grep без опций следует указывать регистр вводимых символов.
В результате появятся строки с совпадениями, где подходящее содержимое будет выделено розовым цветом.
Задействуйте команду grep c опцией -i, чтобы строка выглядела так: grep -i «port» /etc/ssh/sshd_config . В таком случае регистр учитываться не будет.
Вы увидите, что на экране отобразились абсолютно все подходящие результаты.
Это были все способы, позволяющие отыскать текст в файлах Linux. Как видите, каждый из них будет оптимальным в разных случаях, поэтому важно понимать, к какому конкретно средству обратиться в сложившейся ситуации. Наши инструкции помогут не запутаться и справиться с поставленной задачей без каких-либо трудностей.
Помимо этой статьи, на сайте еще 12315 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Источник