Примери употребе Линук греп наредбе

Увод

Команда Линук греп се користи као метода за филтрирање уноса.

ГРЕП означава Глобал Регулар Екпрессион Принтер и због тога, како би је ефикасно искористили, требали бисте имати мало знања о регуларним изразима.

У овом чланку ћу вам показати низ примера који ће вам помоћи да разумете греп наредбу.

01 од 09

Како тражити низ у фајлу користећи ГРЕП

Линук греп наредба.

Замислите да имате текстуалну датотеку звану књиге са следећим насловима за дјецу:

Да бисте све књиге пронашли речима "Тхе" у наслову, користићете следећу синтаксу:

греп Књиге

Следећи резултати ће бити враћени:

У сваком случају, реч "Тхе" ће бити означена.

Имајте на уму да је претраживање осјетљиво на велика и мала слова, па ако један од наслова има "умјесто" Тхе "онда не би био враћен.

Да игноришете случај, можете додати следећи прекидач:

греп књиге - играње игара

Такође можете користити и -и прекидач на следећи начин:

греп-и књиге

02 од 09

Потражите стринг у датотеци користећи знакове

Греп наредба је веома моћна. За филтрирање резултата можете користити мноштво техника усклађивања узорака.

У овом примеру ћу вам показати како да потражите стринг у фајлу користећи џокерове .

Замислите да имате датотеку названу места са следећим називима шкотског места:

абердеен

абериствитх

аберлоур

инверурие

Инвернесс

невбургх

нови јелен

нови галловаи

гласгов

единбургх

Ако желите да пронађете сва места са инвер у имену користите следећу синтаксу:

греп инвер * места

Астериск (*) вилдцард означава 0 или више. Дакле, ако имате место звано Инвер или место названо инвернесс онда ће се оба вратити.

Још један џокер који можете користити је период (.). Ово можете користити за појединачно писмо.

греп инвер.р места

Горња команда би пронашла места која се називају инверурие и инверарије, али не би могла наћи инвереерие јер може бити само један џокер између два р-а која се означава једном временом.

Џемпери за период су корисни, али то може проузроковати проблеме ако их имате као део текста који тражите.

На пример погледајте ову листу имена домена

Да бисте пронашли све о Абоут.цом, можете претраживати само следећу синтаксу:

греп * абоут * домаиннамес

Горња команда би пала ако листа садржи следеће име у њему:

Стога, можете покушати следећу синтаксу:

греп * абоут.цом домаиннамес

Ово би деловало ок, осим ако није постојао домен са слиједећим именом:

абоутицом.цом

Да бисте заиста тражили појам абоут.цом, требало би да избегнете тачку на следећи начин:

греп * о \ .цом доменским именима

Коначна џокарта која ће вам показати је знак питања која означава нулу или један карактер.

На пример:

греп? бер плаценамес

Горња команда ће вратити абердеен, абериствит или чак бервицк.

03 од 09

Тражите стрингове на почетку и крају линије Користећи греп

Карат (^) и долар ($) симбол омогућавају вам да претражујете обрасце на почетку и крају линија.

Замислите да имате датотеку под називом фудбал са следећим тимским именима:

Ако сте желели да пронађете све екипе које су почеле са Манцхестером, користићете следећу синтаксу:

греп ^ Манцхестер тима

Горња команда би вратила Манцхестер Цити и Манцхестер Унитед, али не и ФЦ Унитед Оф Манцхестер.

Алтернативно, можете наћи све тимове који се завршавају са Унитед користећи следећу синтаксу:

греп Унитед $ тимова

Горња команда би вратила Манцхестер Унитед и Невцастле Унитед, али не и ФЦ Унитед Оф Манцхестер.

04 од 09

Бројање утакмица помоћу греп

Ако не желите да вратите стварне линије које одговарају шаблону помоћу греп-а, али само желите да сазнате колико постоје, можете користити следећу синтаксу:

греп -ц образац инпутфиле

Ако је образац двапут упарен онда ће број 2 бити враћен.

05 од 09

Проналажење свих услова који се не подударају користећи греп

Замислите да имате попис имена мјеста са земљама наведеним на следећи начин:

Можда сте приметили да колевски заљев нема земљу која је повезана са њом.

Да бисте потражили сва места са државом, могли бисте да користите следећу синтаксу:

греп земљишта $

Повратни резултати би били сва места осим колевског залива.

Ово очигледно ради само за места која се завршавају на копну (једва научна).

Можете изабрати опцију користећи следећу синтаксу:

греп -в земља $ места

Ово би могло да пронађе сва места која се нису завршила земљом.

06 од 09

Како пронаћи празне линије у фајловима помоћу греп-а

Замислите да имате улазну датотеку коју користи апликација треће стране која зауставља читање датотеке када пронађе празну линију на следећи начин:

Када се апликација стигне до линије након Ливерпоола, престати да чита значење у потпуности је пропустено.

Можете користити греп да тражи празне линије са следећом синтаксом:

греп ^ $ места

Нажалост ово није нарочито корисно, јер само враћа празне линије.

Наравно да можете да бројите број празних линија као проверу да ли је датотека важећа на следећи начин:

греп -ц ^ $ места

Било би корисније знати бројеве линија који имају празну линију тако да их можете замијенити. То можете учинити помоћу следеће наредбе:

греп -н ^ $ места

07 од 09

Како тражити жице горњих и нижих слова користећи греп

Коришћењем греп-а можете одредити које линије у фајлу имају велике словне знакове користећи сљедећу синтаксу:

греп '[АЗ]' филенаме

Квадратне заграде [] омогућавају вам да одредите опсег карактера. У горњим примјерима одговара сваки знак који је између А и З.

Према томе, да бисте се подударали са малим словима, можете користити следећу синтаксу:

греп '[аз]' филенаме

Ако желите да одговарате само словима а не нумеричким или другим симболима можете користити следећу синтаксу:

греп '[а-зА-З]' филенаме

Можете то учинити и са бројевима како слиједи:

греп '[0-9]' филенаме

08 од 09

Тражење понављања шаблона Користећи греп

Можете да користите закривљене заграде {} да бисте потражили понављајући образац.

Замислите да имате датотеку са телефонским бројевима како слиједи:

Знате да први део броја треба да буде три цифре и желите да пронађете линије које не одговарају овом шаблону.

Из претходног примера знате да [0-9] враћа све бројеве у датотеку.

У овом случају желимо да линије које почињу са три броја следи цртица (-). То можете урадити с сљедећом синтаксом:

греп "^ [0-9] [0-9] [0-9] -" бројеви

Као што знамо из претходних примера, карат (^) значи да линија мора почети са следећим образцем.

[0-9] тражи било који број између 0 и 9. Како је ово укључено три пута, одговара 3 броју. Коначно, постоји веза за означавање да веза мора да успије три бројеве.

Коришћењем увртаних заграда можете учинити мању претрагу на следећи начин:

греп "^ [0-9] \ {3 \} -" бројеви

Коса избегава {конзола тако да функционира као део регуларног израза, али у суштини оно што ово говори је [0-9] {3} што значи било који број између 0 и 9 три пута.

Закривљене конзоле се могу користити и на следећи начин:

{5,10}

{5,}

{5,10} значи да се тражени карактер мора поновити најмање 5 пута, али не више од 10 док {5,} значи да се карактер мора поновити најмање 5 пута, али може бити више од тога.

09 од 09

Коришћење излаза из других команди Користећи греп

До сада смо погледали узорак подударања унутар појединачних датотека, али греп може користити излаз из других команди као улаз за подударање узорака.

Велики пример овога је коришћење команде пс који садржи активне процесе.

На пример, покрените следећу команду:

пс -еф

Сви процеси који се покрећу на вашем систему ће бити приказани.

Можете користити греп да потражите одређени поступак за покретање на следећи начин:

пс -еф | греп фирефок

Резиме

Греп наредба је основна Линук наредба и она је вредна учења јер ће вам олакшати живот приликом претраживања датотека и процеса приликом кориштења терминала.