grep

Команда Linux egrep с примерами

Команда Linux egrep с примерами
Команда egrep принадлежит к семейству команды grep, которая используется для поиска по шаблону в Linux. Если вы использовали команду grep, egrep работает так же, как grep -E (grep Extended regex '). Egrep сканирует конкретный файл от строки к строке и печатает строки, содержащие строку поиска / регулярное выражение. В этой статье мы объясним 15 полезных примеров команд egrep, которые помогут новичкам и даже экспертам выполнять осмысленный поиск в Linux. Мы выполнили эти примеры в системе Debian 10 Buster, но их можно легко воспроизвести в большинстве дистрибутивов Linux.

Пример 1: поиск определенной строки в файле

Это наиболее частое использование команды egrep. Что вы делаете, так это то, что вы указываете строку, которую хотите найти, и имя файла, в котором вы хотите найти эту строку, в. Затем результат отображает всю строку, содержащую искомую строку.

Синтаксис:

$ egrep "search_string" имя файла

Пример:

$ egrep файл образца debian.текст

В этом примере я искал слово «debian» в указанном текстовом файле. Вы можете увидеть, как в результатах отображается вся строка, содержащая слово «debian»:

Пример 2: поиск определенной строки в нескольких файлах

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

Синтаксис:

$ egrep "search_string" filename_pattern

Пример:

Здесь мы будем искать слово «debian» во всех .txt, указав шаблон имени файла следующим образом:

$ egrep «debian» *.текст

Команда напечатала все строки вместе с именами файлов, которые содержат слово «debian» из всех .txt в текущем каталоге.

Пример 3: Рекурсивный поиск строки во всем каталоге

Если вы хотите найти строку во всех файлах из каталога и его подкаталогов, вы можете сделать это, используя флаг -r с командой egrep.

Синтаксис:

$ egrep -r "строка_поиска" *

Пример:

В этом примере я ищу слово «образец» в файлах всего текущего каталога (Downloads).

$ egrep -r "образец" *

Результаты содержат все строки вместе с именами файлов, которые содержат слово «образец» из всех файлов в каталоге загрузок и его подкаталогах.

Пример 4: Выполнение поиска без учета регистра

С флагом -i вы можете использовать команду egrep для печати результатов на основе строки поиска, не беспокоясь о ее регистре.

Синтаксис:

$ egrep -i "строка_поиска" имя файла

Пример:

Здесь я ищу слово «debian» и хочу, чтобы в результатах отображались все строки из файла, содержащие слово «debian» или «Debian, независимо от его регистра».

$ egrep -i "строка_поиска" имя файла

Вы можете увидеть, как флаг -i помог мне получить все строки, содержащие строку поиска, с помощью поиска без учета регистра.

Пример 5: Поиск строки как полного слова, а не как подстроки

Когда вы обычно ищете строку через egrep, он печатает все слова, которые содержат строку, как подстроку. Например, поиск строки «on» выведет все слова, содержащие строку «on», например «on», «only», «monitor», «clone» и т. Д. Если вы хотите, чтобы в результатах отображалось только слово «on» как полное слово, а не как подстрока, вы можете использовать флаг -w с egrep.

Синтаксис:

$ egrep -w «строка_поиска» имя файла

Пример:

Здесь я ищу строку «on» в образце файла:

$ egrep -i "on" файл образца.текст

Вы можете видеть в приведенном выше выводе, что он также содержит слово «только». Однако это не то, что мне нужно, так как я ищу исключительно слово «на». Итак, это команда, которую я буду использовать вместо этого:

$ egrep -iw "on" файл-сэмпл.текст

Теперь мои результаты поиска включают только те строки, которые содержат слово «on» целиком.

Пример 6: Печать только имен файлов, содержащих строку

Иногда мы хотим получить только имена файлов, которые содержат определенную строку, а не печатать строки, которые ее содержат. Это можно сделать с помощью флага -l (нижний регистр L) с командой egrep.

Синтаксис:

$ egrep -l "строка_поиска" шаблон_файла

Пример:

Здесь я ищу строку «образец» во всех .txt в текущем каталоге:

$ egrep -l образец *.текст

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

Пример 7: Печать только строки поиска из файла

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

Синтаксис:

$ egrep -o "строка_поиска" имя файла

Пример:

В этом примере я ищу в своем файле слово «Это».

$ egrep -o Этот образец файла_.текст

Примечание. Такое использование команды удобно, когда вы ищете строку, основанную на шаблоне регулярного выражения. Мы подробно объясним регулярные выражения в одном из следующих примеров.

Пример 8: Отображение числа n строк до, после или вокруг строки поиска

Иногда очень важно знать контекст в файле, где используется определенная строка. Egrep удобен в том смысле, что его можно использовать для отображения строки, содержащей строку поиска, а также определенного количества строк до, после и вокруг нее.

Это образец текстового файла, который я буду использовать для объяснения следующих примеров:

N количество строк После строки поиска:

Использование флага A следующим образом отобразит строку, содержащую строку поиска и количество N строк после нее:

$ egrep -A "search_string" имя файла

Пример:

$ egrep -A 2 "образец" файла-образца.текст

N количество строк Перед поисковой строкой:

Использование флага B следующим образом отобразит строку, содержащую строку поиска и количество строк перед ней:

$ egrep -B "search_string" имя файла

Пример:

$ egrep -B 2 "образец" файла-образца.текст

N количество строк Перед поисковой строкой:

Использование флага C следующим образом отобразит строку, содержащую строку поиска, и количество строк до и после нее:

$ egrep -C "search_string" имя файла

Пример:

$ egrep -C 2 "образец" файла-образца.текст

Пример 9: Соответствие регулярному выражению в файлах

Команда egrep становится более мощной, поскольку вы ищете регулярные выражения вместо твердых строк поиска в файле.

Синтаксис:

$ egrep "RegularExpressions" имя файла

Позвольте нам объяснить, как вы можете использовать регулярные выражения в поиске egrep:

Оператор повторения Использовать
? Предыдущий пункт перед ? не является обязательным и соответствует максимум один раз

* Предыдущий элемент перед * будет найден ноль или более раз
+ Предыдущий элемент перед + будет найден один или несколько раз
n Предыдущий элемент точно соответствует n раз.
n, Предыдущий элемент встречается n или более раз
, м Предыдущий элемент соответствует максимум m раз
n, m Предыдущий элемент встречается не менее n раз, но не более m раз

Пример:

В следующем примере сопоставляются строки, содержащие следующее выражение:

начиная с «Gnome» и заканчивая «программами»

Пример 10: Выделение строки поиска

Когда вы устанавливаете переменную среды GREP_OPTIONS, как показано ниже, вы получаете результат со строкой / шаблоном поиска, выделенной в результатах:

$ sudo export GREP_OPTIONS = '- цвет = авто' GREP_COLOR = '100; 8'

Затем вы можете искать строку любым способом, который мы описали в примерах этой статьи.

Пример 11: выполнение обратного поиска в файле

Под инвертированным поиском мы подразумеваем, что команда egrep печатает все в файле, кроме строк, содержащих строку поиска. Мы будем использовать следующий пример файла, чтобы объяснить обратный поиск с помощью egrep. Мы распечатали содержимое файла с помощью команды cat:

Синтаксис:

$ egrep -v "строка_поиска" имя файла

Пример:

В упомянутом нами примере файла мы хотим опустить строку, содержащую слово «два» в выводе, поэтому мы будем использовать следующую команду:

$ egrep -v "два" samplefile_.текст

Вы можете видеть, как выходные данные содержат все из файла образца, кроме второй строки, содержащей строку поиска «два».

Пример 12: Выполнение обратного поиска на основе нескольких критериев / шаблона поиска

С флагом -v вы также можете заставить команду egrep выполнять инвертированный поиск на основе более чем одной строки / шаблона поиска.

Мы будем использовать тот же образец файла, который мы упоминали в примере 11, чтобы объяснить этот сценарий.

Синтаксис:

$ egrep -v -e "строка_поиска" / "шаблон" -e "строка_поиска" / "шаблон"
… имя файла

Пример:

В упомянутом нами примере файла мы хотим опустить строку (строки), содержащие слова «один» и «два» в выводе, поэтому мы будем использовать следующую команду:

$ egrep -v -e «один» -e «два» samplefile_.текст

Мы предусмотрели два слова, которые следует опустить, используя флаг -e, поэтому результат будет выглядеть следующим образом:

Пример 13: Печать количества строк, соответствующих строке поиска

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

Синтаксис:

$ egrep -c "строка_поиска" имя файла

Пример:

В этом примере мы будем использовать флаг -c для подсчета количества строк, содержащих слово «This» в нашем примере файла:

$ egrep -c "Это" имя файла

Здесь вы также можете использовать функцию инвертированного поиска, чтобы подсчитать и распечатать количество строк, не содержащих строку поиска: 

$ grep -v -c "строка_поиска" имя файла

Пример 14: Отображение номера строки, в которой строка соответствует

С флагом -n вы можете заставить команду egrep печатать совпадающую строку вместе с номером строки, содержащей строку поиска.

Синтаксис:

$ grep -n "строка_поиска" имя файла

Пример:

$ grep -n "Этот" файл_выпуска.текст

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

Пример 15: Отображение позиции в файле, где соответствует строка поиска

Если вы хотите узнать позицию в файле, где существует строка поиска, вы можете использовать флаг -b с командой egrep.

$ grep -o -b "строка_поиска" имя файла

Пример:

$ grep -o -b "Этот" файл_выпуска.текст

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

Как установить Doom и играть в него в Linux
Введение в Doom Серия Doom возникла в 90-х годах после выхода оригинальной Doom. Это мгновенно стал хитом, и с тех пор серия игр получила множество на...
Vulkan для пользователей Linux
С каждым новым поколением видеокарт мы видим, как разработчики игр расширяют границы графической точности и приближаются на шаг ближе к фотореализму. ...
OpenTTD против Simutrans
Создание собственного транспортного симулятора может быть увлекательным, расслабляющим и чрезвычайно увлекательным занятием. Вот почему вам нужно попр...