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
Stel dan foar dat jo in tekstbestân hawwe mei boeken mei de folgjende berneboek titels:
- Robin Hood
- Readkapke
- Peter Pan
- Goldilocks And The Three Bears
- Snow White en The Seven Dwarfs
- Pinnochio
- The Cat In The Hat
- De Trije Little Pigs
- De Gruffalo
- Charlie And The Chocolate Factory
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:
- Goldilocks And The Three Bears
- Snow White en The Seven Dwarfs
- The Cat In The Hat
- De Trije Little Pigs
- De Gruffalo
- Charlie And The Chocolate Factory
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
- linux.about.com
- pcsupport.about.com
- mp3.about.com
- minecraft.about.com
- androidgames.about.com
- netforbeginners.about.com
- everydaylinuxuser.com
- google.co.uk
- google.au
- direct.gov.uk
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:
- alldaylinuxuser.com/about.html
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:
- Blackpool
- Liverpool
- de stêd Manchester
- Leicester City
- Manchester United
- Newcastle United
- FC United Of Manchester
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:
- aberdeen skotlân
- glasgow skotlân
- liverpool england
- colwyn bay
- Londen, Ingelân
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:
- aberdeen skotlân
- ynverness skotlân
- liverpool england
- colwyn bay wales
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:
- 055-1234
- 055-4567
- 555-1545
- 444-0167
- 444-0854
- 4549-2234
- x44-1234
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