Как пользоваться командой grep для поиска текста в файлах

Как пользоваться командой grep для поиска текста в файлах

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

Интересный факт: название "grep" произошло от команды, которую можно было выполнить в текстовом редакторе ed: g/re/p.

Синтаксис команды grep

Синтаксис выглядит примерно так:

grep слово filename
grep слово file1 file2 file3
grep 'несколько слов' filename

# Для поиска слова в директории
grep -r слово директория/

Как использовать grep для поиска в файле?

Возьмем для примера файл /etc/passwd:

$ grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash

Поиск слова с grep

По-умолчанию grep будет искать все упоминания заданного слова. Но если вам нужно найти именно слово, которое вы задали, то нужно воспользоваться аргументом -w. Без этого аргумента если зададите слово "foo", то grep выведет и такие результаты: foo123, foobar, kungfoo, foo.

Простое решение:

$ grep -w foo file

Поиск нескольких слов с grep

Для поиска сразу нескольких слов воспользуйтесь этим примером:

$ egrep -w 'слово|слово2' file.txt

Вывести число найденных результатов

grep может выводить число найденных упоминаний слова для каждого файла. Для этого нужно использовать аргумент -c:

$ grep -c 'слово' file.txt
10

Вывод номера строки

Используя параметр -n, вы можете выводить номер строки, где grep смог найти упоминание слова:

$ grep -n 'root' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash