Примерни приложения на Linux grep Command

Въведение

Командата grep за Linux се използва като метод за филтриране на входа.

GREP означава "Глобален регулярен експресионен принтер" и затова, за да го използвате ефективно, трябва да имате известни познания за регулярните изрази.

В тази статия ще ви покажа редица примери, които ще ви помогнат да разберете командата grep.

01 от 09

Как да търсите стринг в файл, използвайки GREP

Командата grep на Linux.

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

За да намерите всички книги с думата "В" в заглавието, ще използвате следния синтаксис:

grep Книгите

Ще бъдат върнати следните резултати:

Във всеки случай думата "The" ще бъде откроена.

Обърнете внимание, че в търсенето има чувствителност на буквите, така че ако едно от заглавията има "the" вместо "The", тогава то няма да бъде върнато.

За да пренебрегнете случая, можете да добавите следния ключ:

грапнете книгите - случай на заместване

Можете също така да използвате превключвателя -i както следва:

grep -i книгите

02 от 09

Търсене на низ в файл с помощта на заместващи символи

Командата grep е много мощна. Можете да използвате множество техники за съвпадение на шаблони, за да филтрирате резултатите.

В този пример ще ви покажа как да търсите низ във файл, използвайки заместващи символи .

Представете си, че имате файл, наречен "места", със следните шотландски имена:

Абърдийн

Абъристуит

Аберлор

Инвърури

Инвърнес

Нюбърг

нов елен

нов галоуий

Глазгоу

Единбург

Ако искате да намерите всички места с инверсия в името използвайте следния синтаксис:

grep inver * места

Заместителят със звездичка (*) е 0 или много. Следователно, ако имате място, наречено инвест или място, наречено инверсия, тогава и двете ще бъдат върнати.

Друг заместващ символ, който можете да използвате, е периодът (.). Можете да го използвате, за да съответства на една буква.

grep inver.r места

Горната команда ще открие места, наречени инвертори и инвертиращи, но няма да открият инверсия, защото може да има само един заместващ символ между двата r, както е означен от единствения период.

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

Например вижте този списък с имена на домейни

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

grep * about * имена на домейни

Горната команда ще падне, ако списъкът съдържа следното име:

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

grep * about.com domainnames

Това би било добре, освен ако няма домейн със следното име:

aboutycom.com

За да търсите наистина термина about.com, ще трябва да избягате от точката, както следва:

grep * за имена на домейни \ .com

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

Например:

гроздови плакаменки

Горната команда щеше да върне абърдийн, аберистуит или дори бегъл.

03 от 09

Търсене на струни в началото и края на линията Използване на grep

Карата (^) и доларът ($) ви позволяват да търсите модели в началото и края на линиите.

Представете си, че имате файл, наречен футбол, със следните имена на отбори:

Ако искате да намерите всички отбори, започнали с Манчестър, ще използвате следния синтаксис:

grep ^ Манчестър отбори

Горната команда ще върне Манчестър Сити и Манчестър Юнайтед, но не и ФК Юнайтед Манчестър

Друга възможност е да намерите всички отбори, завършващи с United, като използвате следния синтаксис:

grep United $ teams

Горната команда ще върне Манчестър Юнайтед и Нюкасъл Юнайтед, но не и ФК Юнайтед Манчестър

04 от 09

Преброяване на броя на мачовете Използване на grep

Ако не искате да върнете действителните редове, които съответстват на шаблон, като използвате grep, но просто искате да знаете колко са налице, можете да използвате следния синтаксис:

grep -c модел за въвеждане на шаблони

Ако шаблонът е бил удвоен два пъти, тогава числото 2 ще бъде върнато.

05 от 09

Намиране на всички термини, които не съвпадат, използвайки grep

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

Може да сте забелязали, че заливът в Колуен няма страна, свързана с него.

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

grep land $ places

Резултатите се връщат всички места, с изключение на Colwyn Bay.

Това очевидно работи само за места, които завършват в земя (едва научна).

Можете да обърнете избора с помощта на следния синтаксис:

grep -v земя $ места

Това ще намери всички места, които не са завършили с земя.

06 от 09

Как да намерим празни линии във файлове Използване на grep

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

Когато приложението стигне до линията след черния дроб, то ще спре да чете, което означава, че колонията на колоната е пропусната изцяло.

Можете да използвате grep за търсене на празни редове със следния синтаксис:

grep ^ $ места

За съжаление това не е особено полезно, защото просто връща празните линии.

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

grep -c ^ $ места

Би било обаче по-полезно да знаете номерата на редовете, които имат празен ред, за да можете да ги замените. Можете да направите това със следната команда:

grep -n ^ $ места

07 от 09

Как да търсите струни от малки или малки букви Използване на grep

С помощта на grep можете да определите кои линии във файл имат главни букви, като използвате следния синтаксис:

grep '[AZ]'

Квадратните скоби [] ви позволяват да определите диапазона на знаците. В горния пример той съответства на всеки знак, който е между A и Z.

Следователно, за да съответствате на малки букви, можете да използвате следния синтаксис:

grep '[az]' име на файла

Ако искате да съвпадате само с букви, а не цифрови или други символи, можете да използвате следния синтаксис:

grep '[a-zA-Z]'

Можете да направите същото и с номера, както следва:

grep '[0-9]' име на файла

08 от 09

Търсене на повтарящи се модели Използване на grep

Можете да използвате къдрави скоби {}, за да потърсите повтарящ се модел.

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

Знаете, че първата част от номера трябва да бъде три цифри и искате да намерите линиите, които не съвпадат с този модел.

От предишния пример знаете, че [0-9] връща всички числа във файл.

В този случай искаме линиите, които започват с три числа, последвани от тире (-). Можете да направите това със следния синтаксис:

grep "^ [0-9] [0-9] [0-9] -" числа

Както знаем от предишните примери карата (^) означава, че линията трябва да започне със следния модел.

[0-9] ще търси номер между 0 и 9. Тъй като това е включено три пъти, то съответства на 3 номера. Накрая има тире, за да се обозначи, че тирето трябва да замени трите числа.

С помощта на скосените скоби можете да направите търсенето по-малко, както следва:

grep "^ [0-9] \ {3 \} -" номера

Наклона излиза от {bracket така, че да работи като част от регулярния израз, но по същество това е това, което казва, че е [0-9] {3}, което означава, че е число между 0 и 9 три пъти.

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

{5,10}

{5}

{5,10} означава, че търсеният знак трябва да се повтори най-малко 5 пъти, но не повече от 10, докато {5,} означава, че знакът трябва да се повтори поне 5 пъти, но може да бъде повече от това.

09 от 09

Използване на изхода от други команди Използване на grep

Досега разгледахме съответствието на шаблона в отделните файлове, но grep може да използва изхода от други команди като вход за съвпадение на шаблони.

Добър пример за това е използването на команда ps, която изброява активните процеси.

Например изпълнете следната команда:

ps-еф

Ще се покажат всички текущи процеси в системата ви.

Можете да използвате grep, за да търсите конкретен процес на изпълнение, както следва:

ps-ее | намерени онлайн филми

резюме

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