10 практических примеров команды Linux Grep

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

Пример файла для демонстрации

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

 cat <<END >> test-file
This is a simple text file that contains
multiple strings as well as some telephone numbers
(555) 555-1234 (567) 666-2345
and email plus web addresses
[email protected]
https://google.com
ftp://mywebserver.com
END

1. Найти текст в файлах

Чтобы найти текстовый шаблон в файле, просто запустите grep, за которым следует имя шаблона. Также укажите имя файла, содержащего текст.

 grep "email" test-file

Эта команда отобразит строку в нашем тестовом файле , содержащую слово email . Вы также можете искать один и тот же текст в нескольких файлах с помощью grep.

 grep "example" /usr/share/dict/american-english /usr/share/dict/british-english

Вышеупомянутая команда отображает все экземпляры слова example в файлах англо- американского и британско-английского словарей.

2. Найдите слова с точным соответствием

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

 grep -w "string" test-file

Параметр -w или –word-regexp команды grep ограничивает вывод только точными совпадениями. Grep состоит из некоторых дополнительных флагов, которые также можно использовать с командой по умолчанию.

Связанный: Как Grep получил свое название? История создания Grep

3. Игнорировать различия в регистре

По умолчанию grep ищет шаблоны с учетом регистра. Однако вы можете отключить это, если заранее не знаете, в каком случае шаблон.

 grep -i "this" test-file

Используйте параметр -i или –ignore-case для отключения чувствительности к регистру.

4. Подсчитайте количество паттернов.

Флаг -c означает количество . Он отображает количество совпадений, найденных для определенного шаблона. Администраторы могут использовать это для получения конкретной информации о системе.

Вы можете передать команду ps с помощью grep, чтобы подсчитать процессы, принадлежащие текущему пользователю.

 ps -ef | grep -c $USER

Следующая команда отображает количество файлов MP3 в каталоге.

 ls ~/Music | grep -c .mp3

5. Отображение номеров строк, содержащих совпадения

Вы можете найти номера строк, которые содержат определенное совпадение. Для этого используйте параметр -n или –line-number команды grep.

 cat /etc/passwd | grep -n rubaiat

Этот параметр особенно полезен для отладки исходного кода и устранения неполадок в файлах журнала. Чтобы отобразить все номера строк в ~ / .vimrc , которые используются для настройки текстового редактора Vim :

 grep -n "set" ~/.vimrc

6. Найдите имена файлов с помощью расширений

Чтобы получить список всех файлов MP3, находящихся в каталоге ~ / Music :

 ls ~/Music/ | grep ".mp3"

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

 ls | grep ".php"

7. Найдите шаблоны в сжатых файлах

Команда grep в Linux также может находить шаблоны внутри сжатых файлов. Однако для этого вам нужно будет использовать команду zgrep . Сначала создайте сжатый архив нашего тестового файла , набрав:

 gzip test-file

Теперь вы можете искать текст или другие шаблоны внутри полученного архива.

 zgrep email test-file.gz

8. Найдите адреса электронной почты.

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

 grep '^[a-zA-Z0-9]+@[a-zA-Z0-9]+.[az]{2,}' test-file

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

9. Найдите телефонные номера с помощью Grep.

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

 grep '(([0-9]{3})|[0-9]{3})[ -]?[0-9]{3}[ -]?[0-9]{4}' test-file

Вышеупомянутая команда отфильтровывает десятизначные американские телефонные номера.

10. Найдите URL-адреса в исходных файлах

Мы можем использовать возможности grep для вывода списка URL-адресов, найденных в текстовых файлах. Приведенная ниже команда печатает все URL-адреса, присутствующие в тестовом файле .

 grep -E "^(http|https|ftp):[/]{2}([a-zA-Z0-9-.]+.[a-zA-Z]{2,4})" test-file

Мы снова используем параметр -E для расширенных регулярных выражений. Вы также можете использовать команду egrep, чтобы не добавлять это.

 egrep "^(http|https|ftp):[/]{2}([a-zA-Z0-9-.]+.[a-zA-Z]{2,4})" test-file

Освоение команды Linux Grep

Мы представили несколько полезных примеров команды Linux grep для решения реальных проблем. Хотя эти примеры демонстрируют возможности grep для обработки текста, вам необходимо овладеть регулярными выражениями, если вы хотите добиться максимальной производительности с помощью grep.

Иногда пользователи Linux сталкиваются с определенными ситуациями, когда они не могут вспомнить различные параметры, связанные с командой. Будем надеяться, что операционная система Linux предоставляет вам способы получить справку из командной строки почти для каждой системной утилиты.