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 состоит из некоторых дополнительных флагов, которые также можно использовать с командой по умолчанию.
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 предоставляет вам способы получить справку из командной строки почти для каждой системной утилиты.