Gebrûk fan 'e Linux-grep Command

Ynlieding

It kommando Linux grep wurdt brûkt as in metoade foar filtering ynfier.

GREP stiet foar Global Regular Expression Printer en dêrom om effektiv te brûken, moatte jo gewoan kennis hawwe oer reguliere útdrukken.

Yn dit artikel sil ik jo in oantal foarbylden sjen litte dy't jo helpe om it grepbehear te begripen.

01 of 09

Hoe kinne jo sykje foar in tekenrige yn in triem mei GREP

De Linux grep Command.

Stel dan foar dat jo in tekstbestân hawwe mei boeken mei de folgjende berneboek titels:

Om alle boeken mei it wurd "De" te finen yn 'e titel brûke jo de folgjende syntaksis:

grep De boeken

De folgjende resultaten wurde weromjûn:

Yn elk gefal wurdt it wurd "De" markearre.

Tink derom dat it sykjen is saak as gefoelich as ien fan 'e titels' de 'hie ynstee fan "De" dan soe it net weromjûn wurde.

Om it gefal te ûnthâlden kinne jo de folgjende wiksel taheakje:

Grep de boeken - oardering

Jo kinne ek de -e wikselje as folgjend:

grep -i de boeken

02 of 09

Sykje foar in tekenrige yn in triem mei help fan Wildcards

It grepbehear is tige machtich. Jo kinne in soad oanpaste metoade brûke foar passende techniken om filters te filterjen.

Yn dit foarbyld sil ik jo sjen litte hoe't jo sykje nei in tekenrige yn in bestân mei help fan wildcards .

Stel dan jo in triem neamd plak mei de neikommende Skotske plaknammen:

aberdeen

aberystwyth

aberlour

ynverurie

ynverness

newburgh

nije ree

nije galloway

glasgow

edinburgh

As jo ​​alle plakken fine mei ynver yn 'e namme, brûk de folgjende syntaksis:

grep ynver * plakken

De asterisk (*) wildcard stiet foar 0 of in soad. Dêrom as jo in plak ynrjochtsje of in plak ynrjochtsje, dan wurde beide weromjûn.

In oare wildcard dy't jo brûke kinne is de perioade (.). Jo kinne dit brûke om ien inkelde letter te passen.

grep inver.r plakken

It boppesteande kommando soe plannen fine ynverurie en ynteressearje, mar net ynvereerie fine, om't der mar ien fjildkaart wêze kin tusken de beide r's as as ienige perioade.

De periodyk kaart is nuttich, mar it kin problemen as jo ien hawwe as in part fan de tekst dy't jo sykje.

Sjoch bygelyks op dizze list fan domeinnammen

Om alle about.coms te finen, kinne jo gewoan de systeaks brûke:

grep * oer * domeinnammen

It boppesteande kommando soe foarkomt as de list de folgjende namme befettet:

Jo kinne dêrnei de folgjende syntaks probearje:

grep * about.com domainnames

Dit soe goed wurkje as it in domein wie mei de folgjende namme:

aboutycom.com

Om echt te sykjen foar de term about.com moatte jo de punten folgje moatte:

grep * oer \\ domainnames

De lêste wildcard om jo sjen te litten is it fraachteken dat stiet foar nul of ien karakter.

Bygelyks:

grep? ber placenames

It boppeste kommando soe werdeen, ôfstammich of sels berwick weromkomme.

03 of 09

Sykje foar stringen oan 'e begjin en ein fan' e rigel By grep

De karat (^) en it dollar ($) symboal kinne jo sykje foar patroanen oan it begjin en ein fan rigen.

Stel dan foar dat jo in triem neamd fuotbalje mei de folgjende teamnammen:

As jo ​​alle ploegen fûn hawwe dy't begjin met Manchester hawwe jo de folgjende syntaksis brûke:

grep ^ Manchester-ploegen

It boppeste kommando soe Manchester City en Manchester United weromsette, mar net FC United Of Manchester.

Alternatyf kinne jo alle ploegen fine mei de Feriene Steaten mei de folgjende syntaks:

grep United $ teams

It boppeste kommando soe Manchester United en Newcastle United mar weromkomme, mar net FC United Of Manchester.

04 of 09

De nûmer fan wedstriden wurde mei grep brûkt

As jo ​​de echte linen net weromjaan wolle dy't oerienkomme mei in greppel mei grepp mar jo wolle gewoan witte hoefolle der binne jo de folgjende syntaksis brûke:

grep -c pattern inputfile

As it patroan twa kear oanjûn is dan soe it nûmer 2 weromkommen wurde.

05 of 09

Sykje alle gebrûk dy't gjin spultsje brûke grep

Stel jimme in list mei plaknammen mei de lannen as neikommende steaten:

Jo miskien wierskynlik hawwe dat de kolwynske baai gjin lokaasje hat.

Om te sykjen nei alle plakken mei in lân kinne jo de folgjende syntaks brûke:

grep lân $ plakken

De resultaten krijt alle plakken as útsûndering foar colwyn bay.

Dit offisjeel wurket allinnich foar plakken dy't einigje yn lân (net wittenskiplik).

Jo kinne it seleksje ynwekje mei de folgjende syntaksis:

grep -v lân $ plakken

Dit soe alle plakken fine dy't net mei lân einigje.

06 van 09

Hoe kinne lege linen fine yn triemen mei grep

Stel jimme foar yn in ynput triem dat brûkt wurdt troch in applikaasje fan tredden dy't de triem lêze lit as it in lege line fynt as folgjend:

As de applikaasje nei de line nei it liverpool komt, sil it stopjen fan 'e betsjutting fan colwyn bay folslein mislearre.

Jo kinne grep brûke om nei lege linen te sykjen mei de folgjende syntaks:

grep ^ $ plakken

Spitigernôch is dit net hielendal brûkber om't it just de lege rigels weromkommt.

Jo kinne fansels in tal fan it tal lege linen krije as in kontrôle om te sjen oft de triem jildich is as folget:

grep -c ^ $ plakken

It soe lykwols mear nuttich wêze om de rigelsnûmers te witten dy't in lege line hawwe, sadat jo se ferfange kinne. Jo kinne dit dwaan mei it folgjende kommando:

grep -n ^ $ plakken

07 of 09

Hoe kinne jo sykje foar stringen fan haadletters of lytse letters mei grepp

Mei grepp kinne jo bepale hokker linen yn in bestân haadbehears ha mei de folgjende syntaks:

grep '[AZ]' triemnamme

De fjouwerkante blêden [] litte jo it berik fan karakteren bepale. Yn it boppeneamde foarbyld komt it elke karakter lykas tusken A en Z.

Dêrtroch om lytse letters te passen kinne jo de folgjende syntax brûke:

grep '[az]' triemnamme

As jo ​​allinich brieven en net numeriken of oare symboalen passe wolle, kinne jo de folgjende syntax brûke:

grep '[a-zA-Z]' triemnamme

Jo kinne itselde dwaan mei getallen as folgjend:

grep '[0-9]' triemnamme

08 of 09

Sykje nei repetearjen fan patroanen mei grep

Jo kinne kursive klammerkes brûke {} om te sykjen nei in werhellende patroan.

Immen jo in triem mei tillefoannûmers sa as:

Jo witte dat it earste diel fan it getal trije sifers wêze moat en jo wolle de rigels fine dy't net mei dit patroon passe.

Fan it foarige foarbyld kinne jo witte dat [0-9] alle getallen yn in bestân weromkommt.

Op dit stuit wolle wy de linen dy't begjinne mei trije nûmers dy't folgje fan in benyn (-). Jo kinne dat dwaan mei de folgjende syntaksis:

grep "^ [0-9] [0-9] [0-9] -" nûmers

As wy witte fan foarige foarbylden de karat (^) betsjut dat de line moat mei it folgjende teken begjinne.

De [0-9] sil socht nei elke nûmer tusken 0 en 9. As dit trije kear opnommen is, komt it mei 3 getallen oerien. Uteinlik is der in bijen om te bepalen dat in bijen de trije nûmers slagje moatte.

Troch gebrûk te meitsjen fan 'e soarte brackets kinne jo it sykjen lytser meitsje as folgjend:

grep "^ [0-9] \ {3 \} -" nûmers

De skaal ûntbrekt de {klokje sadat it wurket as in part fan 'e reguliere ekspresje, mar yn essinsje wat wat seit is [0-9] {3} dat elke getal tusken 0 en 9 trije kear betsjut.

De prachtige klokken kinne ek brûkt wurde:

{5,10}

{5,}

De {5,10} betsjuttet dat it karakter moat wurde op syn minst 5 kear mar net mear as 10 werhelje, wylst de {5,} betsjut dat it karakter moat op syn minst 5 kear opnij wêze, mar it kin mear wêze as dat.

09 of 09

It útfier fan oare kommando's brûke Grep

Boppedat hawwe wy nei samling oerienkomst yndividueel yndividueel triemmen mar grep kin de útfier fan oare kommando's brûke as de ynput foar pattern matching.

In grut foarbyld dêrfan is it brûken fan it ps-kommando dy't aktive prosessen liedt.

Sjoch bygelyks it folgjende kommando:

ps -ef

Alle rinnende prozes op jo systeem sille werjûn wurde.

Jo kinne grep brûke om nei in bepaald rinnende proseduere te sykjen as:

ps -ef | grep firefox

Gearfetting

It befetsje grep is in fundamint Linux-kommando en it is ien dy't goed learet as it jo libben folle makliker meitsje sil as jo sykje foar triemmen en prosessen by it brûken fan it terminal.