Перейти к основному содержанию
Рецепты Linux

Main navigation

  • Основы
  • Система
  • Команды
  • Программы
  • Дистро
  • Интерфейсы
  • Устройства
  • Доки
User account menu
  • Войти

Строка навигации

  1. Главная

Команда grep в Linux

Автор: admin, 6 мая, 2022
Команды

Утилита командной строки Linux grep даёт возможность найти текст в указанном файле. Можно также передать вывод любой команды в grep, что значительно упрощает поиск.

Команда grep Linux

Содержание

  • Синопсис
  • Опции
  • Примеры использования
    • Передача вывода ls в grep
    • Поиск слова в текстовом файле
    • Поиск по нескольким параметрам
    • Рекурсивный поиск
    • Частота появления слова в тексте
    • Доступ к системной информации
  • Заключение

Синопсис

grep [ПАРАМЕТР]… ШАБЛОНЫ [ФАЙЛ]…

Поиск шаблонов в каждом файле.

Пример:

grep -i 'hello world' menu.h main.c

Шаблонов можно указать несколько, разделяя их символом новой строки.

Опции

Шаблон выбора и его интерпретация:

-E
шаблоны — расширенные регулярные выражения
-F
шаблоны — строки
-G
шаблоны — простые регулярные выражения
-e
использовать шаблоны для поиска
-f
брать шаблоны из файла
-i
игнорировать различие регистра
-w
совпадение обязательно с целым словом
-x
совпадение обязательно с целой строкой
-z
строки разделяются байтом с нулевым значением, а не символом конца строки
-s
не показывать сообщения об ошибках
-v
выбирать не подходящие строки
-V
показать информацию о версии и закончить работу
--help
показать эту справку и закончить работу
-m
остановиться после указанного числа совпавших строк
-b
печатать вместе с выходными строками смещение в байтах
-n
печатать номер строки вместе с выходными строками
-H
печатать имя файла для каждой выводимой строки
-h
не начинать вывод с имени файла
-o
показывать только совпавшие непустые части строк
-q
подавлять весь обычный вывод
-r
то же, что и --directories=recurse
-R
тоже, но с переходом по всем символьным ссылкам
-L
печатать только имена файлов без выбранных строк
-l
печатать только имена файлов с выбранными строками
-c
печатать только количество выбранных строк на файл
-T
выравнивать табуляцией (если нужно)
--color[=КОГДА]
использовать маркеры для различия совпадающих строк; когда может быть «always» (всегда), «never» (никогда) или «auto» (автоматически)

Если в качестве файла указан символ -, то читается стандартный ввод. Если файл не указан, то читается текущий каталог .  и - в противномслучае. Если указано менее двух файлов, то предполагается -h. При нахождении совпадений любой строки кодом завершения будет 0 и 1, если ничего не совпало. При возникновении ошибок и если не указан параметр -q, кодом завершения будет 2.

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

Передача вывода ls в grep

Уже описаннная и очень популярная команда ls выводит список файлов и каталогов

oleg@mobile:~:$ ls
abc.txt       build/    Documents/        FreeShip-3.5.2.45_x86-64/  photo/         slimthemes/  webprojects/  www/          Документы/
aur/          cache/    Downloads/        GNUstep/                   recode/        Slovoeb/     webupload/    xep/          Загрузки/
backgrounds/  Desktop/  EtxtAntiplagiat/  Mail/                      Sape/          store/       wifi/         XEP/
bin/          docs/     FreeShip/         mailbox/                   skype-export/  tmp/         work/         Yandex.Disk/
oleg@mobile:~:$ 

При поиске определённого каталога или файла можно передать вывод команды ls в grep через вертикальную черту |, передав при этом grep необходимое слово.

oleg@mobile:~:$ ls ~/webprojects/linuxcookbook.ru/img/ | grep linux-grep-command.png
linux-grep-command.png
oleg@mobile:~:$ 

При отсутствии этого слова команда grep ничего не возвращает.

При поиске не одного слова, а словосочетания или предложения, параметр команды выделяется одинарными или двойными кавычками.

leg@mobile:~:$ ls ~/Документы/ | grep 'My Drawings'
My Drawings/
oleg@mobile:~:$ 

Команду grep можно, конечно, использовать самостоятельно.

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

Для поиска слова в текстовом файле достаточно ввести команду:

$ grep ШАБЛОН [файл]

где

запрос
слово, которое необходимо найти
файл
файл, в котором выполняется поиск слова
oleg@mobile:~/www/backuplinode:$ grep max_connections my.cnf
max_connections = 30
oleg@mobile:~/www/backuplinode:$

Поиск по нескольким параметрам

Команда grep может осуществлять поиск по нескольким параметрам. Для этого перед каждым аргументом указывается ключ -e. Команда выводит в этом случае все вхождения указанных слов.

oleg@mobile:~/www/backuplinode:$ grep -e max_connections -e innodb_buffer_pool_size my.cnf 
max_connections = 30
innodb_buffer_pool_size = 512M
oleg@mobile:~/www/backuplinode:$ 

Рекурсивный поиск

В этом случае команда grep запускается с ключом -r. Команда выведет все файлы, где найдено совпадение с указанным шаблоном, а также путь к ним. По умолчанию поиск ведется по текущей директории и поддиректориях.

oleg@mobile:~:$ grep -r linux-grep-command.png webprojects/linuxcookbook.ru/
webprojects/linuxcookbook.ru/articles/grep:oleg@mobile:~:$ ls ~/webprojects/linuxcookbook.ru/img/ | grep linux-grep-command.png
webprojects/linuxcookbook.ru/articles/grep:linux-grep-command.png
oleg@mobile:~:$ 

Частота появления слова в тексте

Для этого используется опция -c:

oleg@mobile:~:$ grep -r -c Linux webprojects/linuxcookbook.ru/articles/komanda-ls-linux 
15
oleg@mobile:~:$

Доступ к системной информации

Определение модели компьютера:

ocat /proc/cpuinfo | grep -i 'Model'grep -i 'Model'
model        : 42
model name    : Intel(R) Pentium(R) CPU B950 @ 2.10GHz
model        : 42
model name    : Intel(R) Pentium(R) CPU B950 @ 2.10GHz
oleg@mobile:~:$ 

Заключение

При работе с большим количеством текстовых файлов команда grep чрезвычайно полезна. Эта простая универсальная утилита имеет множество полезных функций. Даже начинающие пользователи Linux быстро понимают то, что она значительно повышает производительность труда.

Последние материалы

  • Приложение scanimage
    7 hours 56 minutes ago
  • Утилита sensors
    4 days ago
  • Сканер Rkhunter
    1 week 4 days ago
  • Программа resize2fs
    2 weeks 3 days ago
  • Аудиопроигрыватель QMMP
    3 weeks 1 day ago
RSS feed

Secondary menu

  • О проекте

© 2008–2025 Олег Меньшенин mensh@yandex.ru