В этой статье мы объясним использование утилиты grep на различных примерах. Мы будем использовать Debian 10 для объяснения команд и методов, упомянутых в этой статье.
Установка Grep
Grep установлен в большинстве дистрибутивов Linux. Однако в случае, если он отсутствует в вашей системе, вы можете установить его, используя следующий метод в Терминале:
$ sudo apt-get install grepИспользование Grep
Вот основной синтаксис команды grep. Он начинается с grep, за которым следуют некоторые параметры и критерии поиска, а затем заканчивается именем файла.
$ grep [параметры] ШАБЛОН [ФАЙЛ…]Искать файлы
Чтобы найти имя файла в каталоге, содержащем определенную строку, вы можете использовать команду grep следующим образом:
$ ls -l | grep -i «строкаНапример, для поиска имени файла, содержащего строку «контрольная работа«, Команда будет такой:
$ ls -l | grep -i testЭта команда выводит список всех файлов, содержащих строку «контрольная работа”.
Искать строку в файле
Для поиска строки в определенном файле вы можете использовать следующий синтаксис команды:
$ grep «строка» имя файлаНапример, для поиска строки «контрольная работа»В файле с именем testfile1, мы использовали следующую команду:
$ grep «сотрудник» testfile1
Приведенный выше вывод вернул предложение из testfile1 который содержит строку «работник”.
Искать строку в нескольких файлах
Для поиска строки в нескольких файлах можно использовать следующий синтаксис команды:
$ grep «строка» имя_файла1 имя_файла2Например, для поиска строки «employee» в наших двух файлах testfile1 и testfile2 мы использовали следующую команду:
$ grep «сотрудник» testfile1 testfile2
Приведенная выше команда перечислит все строки, содержащие строку «employee» из файлов testfile1 и testfile2.
Вы также можете использовать подстановочный знак, если все имена файлов начинаются с одного и того же текста.
$ grep «строка» имя файла *Например, если мы возьмем приведенный выше пример, в котором наши имена файлов были testfile1 и testfile2 , команда будет такой:
Тестовый файл $ grep «сотрудник» *
Искать строку в файле, игнорируя регистр строки
Чаще всего вы сталкивались с тем, что когда вы ищете что-то с помощью grep, но не получаете результат. Это происходит из-за несоответствия регистра при поиске строки. Как и в нашем примере, если мы по ошибке используем "Работник" вместо "работник», Он вернет nil, поскольку наш файл содержит строку«работник”Строчными буквами.
Вы можете указать grep игнорировать регистр строки поиска, используя флаг -i после grep следующим образом:
$ grep -i «строка» имя файла
Используя флаг -i, команда выполнит поиск без учета регистра и вернет все строки, содержащие строку «работник»В нем без учета букв в верхнем или нижнем регистре.
Поиск с использованием регулярного выражения
При правильном использовании регулярное выражение - очень эффективная функция в grep. С помощью команды Grep вы можете определить регулярное выражение с начальным и конечным ключевыми словами. При этом вам не нужно будет вводить всю строку с помощью команды grep. Для этой цели можно использовать следующий синтаксис.
$ grep «начальное ключевое слово.* endKeyword »имя файлаНапример, для поиска в файле с именем testfile1 строки, которая начинается со строки «this» и заканчивается строкой «data», мы использовали следующую команду:
$ grep «это.* данные »testfile1
Он напечатает всю строку из testfile1 содержащее выражение (начальное ключевое слово «this» и конечное ключевое слово «данные»).
Вывести определенное количество строк после / перед поисковой строкой
Вы также можете отобразить определенное количество строк в файле до / после совпадения строки вместе с самой совпадающей строкой. Для этого можно использовать следующий синтаксис:
$ grep -AОн отобразит количество строк N после того, как строка будет сопоставлена в указанном файле, включая сопоставленную строку.
Например, это наш образец файла с именем testfile2.
Следующая команда выведет совпадающую строку, содержащую строку «работник”, А также две строчки после него.
$ grep -A 2 -i «сотрудник» testfile2
Точно так же, чтобы отобразить количество N строк перед совпадающей строкой в конкретном файле, используйте следующий синтаксис:
$ grep -BЧтобы отобразить N строк вокруг строки в конкретном файле, используйте следующий синтаксис:
$ grep -CВыделение поиска
Grep по умолчанию печатает совпадающие строки, но не показывает, какая часть строки совпадает. Если вы используете параметр -color с grep, он покажет, где строки обработки появляются в вашем файле. Grep по умолчанию использует красный цвет для выделения.
Для этого можно использовать следующий синтаксис:
$ grep «строка» filename --color
Подсчет количества совпадений
Если вы хотите подсчитать, сколько раз конкретное слово встречается в определенном файле, вы можете использовать команду grep с параметром -c. Он возвращает только количество совпадений, а не сами совпадения. Для этого можно использовать следующий синтаксис:
$ grep -c «строка» имя файлаЭто наш пример файла выглядит так:
Ниже приведен пример команды, которая вернула, сколько раз слово файл появился в файле с именем testfile3.
Перевернутый поиск
Иногда вы хотите выполнить обратный поиск, который отображает все строки, кроме тех, которые совпадают с вводом. Для этого просто используйте флаг -v, за которым следует grep:
$ grep -v «строка» имя файлаНапример, чтобы отобразить все строки в файле testfile3 которые не содержат слова «аккаунт», мы использовали следующую команду:
$ grep -v «аккаунт» testfile3
Использование Grep с другими командами
Grep также можно использовать для фильтрации требуемого результата из вывода различных команд. Например, из «список установленных apt » вывод команды, вы хотите найти только пакеты, которые были установлены автоматически, вы можете отфильтровать результат с помощью grep следующим образом:
$ apt - список установленных | grep автоматический
Аналогичным образом lscpu предоставляет подробную информацию о процессоре. Если вас просто интересует информация об архитектуре ЦП, вы можете отфильтровать ее, используя следующую команду:
$ lscpu | grep Архитектура
В этой статье мы описали несколько примеров, которые помогут вам разобраться в командах grep и их использовании в различных условиях. Хороший контроль над командой grep может сэкономить много времени, если вам нужно просмотреть большие файлы конфигурации или журналов и пролистать через них полезную информацию.