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 samplefile.текст

В този пример потърсих думата „debian“ в посочения текстов файл. Можете да видите как резултатите показват целия ред, който съдържа думата „debian“:

Пример 2: Търсене на конкретен низ в множество файлове

С командата egrep можете да търсите низ сред множество файлове, намиращи се в една и съща директория. Просто трябва да сте малко по-конкретни в предоставянето на „шаблон“ за търсените файлове. Това ще стане по-ясно с примера, който ще представим.

Синтаксис:

$ egrep "search_string" filename_pattern

Пример:

Тук ще търсим думата „debian“ във всички .txt файлове, като посочите модела на името на файла, както следва:

$ egrep “debian” *.текст

Командата е отпечатала всички редове, заедно с имената на файловете, които съдържат думата „debian“ от всички .txt файлове в текущата директория.

Пример 3: Рекурсивно търсене на низа в цялата директория

Когато искате да търсите низ във всички файлове от директория и нейните поддиректории, можете да го направите, като използвате флага -r с командата egrep.

Синтаксис:

$ egrep -r "string_string" *

Пример:

В този пример търся думата „sample“ във файловете на цялата текуща директория (Downloads).

$ egrep -r "проба" *

Резултатите съдържат всички редове, заедно с имената на файловете, които съдържат думата „sample“ от всички файлове в директорията за изтегляния и нейните поддиректории.

Пример 4: Извършване на търсене без чувствителност към регистъра

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

Синтаксис:

$ egrep -i име на файл "search_string"

Пример:

Тук търся думата „debian“ и искам резултатите да показват всички редове от файла, които съдържат думата „debian“ или „Debian, независимо от случая.

$ egrep -i име на файл "search_string"

Можете да видите как флагът -i ми помогна при извличането на всички редове, които съдържат низа за търсене, чрез случайно „нечувствително“ търсене.

Пример 5: Търсене на низ като пълна дума, а не като подниз

Когато обикновено търсите низ чрез egrep, той отпечатва всички думи, които съдържат низ като подниз. Например търсенето на низа „on“ ще отпечата всички думи, съдържащи низа „on“, като „on“, „only“, „monitor“, „clone“ и др. Ако искате резултатите да показват само думата „on“ като пълна дума, а не като подниз, можете да използвате флага -w с egrep.

Синтаксис:

$ egrep -w име на файл „search_string”

Пример:

Тук търся низа „on“ в примерен файл:

$ egrep -i “on” samplefile.текст

Можете да видите в горния изход, че той също съдържа думата „само“. Това обаче не е това, което искам, тъй като търся изключително думата „on“. И така, това е командата, която ще използвам вместо това:

$ egrep -iw “on” samplefile.текст

Сега резултатите от търсенето ми включват само редовете, които съдържат думата „включено“ като цяла дума.

Пример 6: Отпечатване само на имената на файлове, които съдържат низа

Понякога искаме да извлечем само имената на файлове, които съдържат конкретен низ, вместо да отпечатваме редовете, които го съдържат. Това може да се направи с помощта на флага -l (малки букви L) с командата egrep.

Синтаксис:

$ egrep -l "образец_на_ търсене" модел_на_файл

Пример:

Тук търся низа „sample“ във всички .txt файлове в текущата директория:

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

Резултатите от търсенето отпечатват само името на файловете, които съдържат посочения низ.

Пример 7: Отпечатване само на низа за търсене от файл

Вместо да отпечатате целия ред, който съдържа низ за търсене, можете да използвате командата egrep, за да отпечатате самия низ. Низът ще бъде отпечатан колко пъти се появява в посочения файл.

Синтаксис:

$ egrep -o име на файл "search_string"

Пример:

В този пример търся думата „Това“ в моя файл.

$ egrep -o Този примерен файл_.текст

Забележка: Тази употреба на командата е полезна, когато търсите низ, базиран на шаблон на регулярен израз. Ще обясним подробно регулярните изрази в един от следващите примери.

Пример 8: Показване на n броя редове преди, след или около низа за търсене

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

Това е примерен текстов файл, който ще използвам, за да обясня следващите примери:

N брой редове След низа за търсене:

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

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

Пример:

$ egrep -A 2 "sample" samplefile.текст

N брой редове Преди низа за търсене:

Използването на флага B по следния начин ще покаже реда, съдържащ низа за търсене и N броя редове преди него:

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

Пример:

$ egrep -B 2 "sample" samplefile.текст

N брой редове Преди низа за търсене:

Използването на флага C по следния начин ще покаже реда, съдържащ низа за търсене, и N броя редове преди и след него:

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

Пример:

$ egrep -C 2 "sample" samplefile.текст

Пример 9: Съвпадение на регулярния израз във файлове

Командата egrep става по-мощна, докато търсите регулярни изрази вместо твърди низове за търсене във файл.

Синтаксис:

$ egrep "RegularExpressions" име на файл

Нека ви обясним как можете да използвате регулярни изрази в търсенето си с egrep:

Оператор за повторение Използвайте
? Предишната точка преди ? е по избор и се съчетава максимум еднократно

* Предишният елемент преди * ще бъде съчетан нула или повече пъти
+ Предишният елемент преди + ще бъде съчетан един или повече пъти
н Предходният елемент е точно съвпадащ n брой пъти.
н, Предходният елемент се съчетава n или повече пъти
, m Предходният елемент се съчетава максимум m пъти
n, m Предходният елемент се съчетава поне n пъти, но не повече от m пъти

Пример:

В следващия пример се съпоставят редовете, съдържащи следния израз:

като се започне с „Gnome“ и се завърши на „програми“

Пример 10: Открояване на низа за търсене

Когато зададете променливата на средата GREP_OPTIONS, както е показано по-долу, получавате изхода си с низа / модела за търсене, маркирани в резултатите:

$ sudo export GREP_OPTIONS = '- color = auto' GREP_COLOR = '100; 8'

След това можете да търсите низа по какъвто и да е начин, описан в примерите на тази статия.

Пример 11: Извършване на инвертно търсене във файл

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

Синтаксис:

$ egrep -v име на файл "search_string"

Пример:

От примерния файл, който споменахме, искаме да пропуснем реда, съдържащ думата „две“ в изхода, затова ще използваме следната команда:

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

Можете да видите как изходът съдържа всичко от примерния файл, с изключение на втория ред, съдържащ низа за търсене „две“.

Пример 12: Извършване на инвертирано търсене въз основа на множество критерии / модел на търсене

С флага -v можете също да направите командата egrep за извършване на обърнато търсене въз основа на повече от един низ / шаблон за търсене.

Ще използваме същия примерен файл, който споменахме в пример 11, за да обясним този сценарий.

Синтаксис:

$ egrep -v -e "search_string" / ”pattern” -e "search_string" / ”pattern”
… име на файл

Пример:

От примерния файл, който споменахме, искаме да пропуснем реда (ите), съдържащ думите „едно“ и „две“ в изхода, затова ще използваме следната команда:

$ egrep -v -e “one” -e “two” samplefile_.текст

Предоставихме две думи, които да пропуснем, използвайки флага -e, следователно изходът ще се появи, както следва:

Пример 13: Отпечатване на броя редове, които съответстват на низа за търсене

Вместо да отпечатвате търсения низ от файла или редовете, които го съдържат, можете да използвате командата egrep, за да преброите и отпечатате броя на редовете, съответстващи на низа. Този брой може да бъде извлечен с помощта на флага -c с командата egrep.

Синтаксис:

$ egrep -c име на файл "search_string"

Пример:

В този пример ще използваме флага -c, за да преброим броя на редовете, които съдържат думата „Това“ в нашия примерен файл:

$ egrep -c "Това" име на файл

Можете също да използвате функцията за инвертирано търсене тук, за да преброите и отпечатате броя на редовете, които не съдържат низа за търсене: 

$ grep -v -c име на файл "search_string"

Пример 14: Показване на номера на реда, където низът съответства

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

Синтаксис:

$ grep -n име на файл "search_string"

Пример:

$ grep -n "Този" samplefile_.текст

Можете да видите как номерата на редовете се показват спрямо резултатите от търсенето.

Пример 15: Показване на позицията във файла, където низът за търсене съвпада

Ако искате да знаете позицията във файла, където съществува низът за търсене, можете да използвате флага -b с командата egrep.

$ grep -o -b име на файл "search_string"

Пример:

$ grep -o -b "Това" samplefile_.текст

Резултатите от търсенето отпечатват байтовото отместване на файла, където съществува думата за търсене.Това беше подробно използване на командата egrep. Използвайки комбинация от флаговете, обяснени в тази статия, можете да извършвате по-смислени и сложни търсения във вашите файлове.

Битка за Уеснот 1.13.6 Разработка освободена
Битка за Уеснот 1.13.6, издаден миналия месец, е шестата версия за разработка в 1.13.x серия и предоставя редица подобрения, най-вече на потребителски...
Как да инсталирате League Of Legends на Ubuntu 14.04
Ако сте фен на League of Legends, това е възможност за вас да тествате League of Legends. Имайте предвид, че LOL се поддържа на PlayOnLinux, ако сте п...
Инсталирайте най-новата стратегия за игра OpenRA на Ubuntu Linux
OpenRA е Libre / Free Real Time стратегия за игра, която пресъздава ранните игри на Westwood като класическата Command & Conquer: Red Alert. Разпредел...