Prezantimi
Komanda Linux grep përdoret si një metodë për filtrimin e inputeve.
GREP qëndron për Global Display Express Printer dhe për këtë arsye për ta përdorur atë në mënyrë efektive, ju duhet të keni disa njohuri rreth shprehjeve të rregullta.
Në këtë artikull, unë do të ju tregoj një numër shembujsh të cilat do t'ju ndihmojnë të kuptoni komandën grep.
01 nga 09
Si të kërkoni për një string në një skedar duke përdorur GREP
Imagjinoni që keni një skedar teksti të quajtur libra me titujt e mëposhtëm të librave për fëmijë:
- Robin Hood
- Kuq e Kuqe
- Peter Pan
- Goldilocks Dhe Tre Bears
- Bora e Bardhë dhe Shtatë Dwarfs
- Pinnochio
- Cat në kapelë
- Tre Derrat e Vogla
- Gruffalo
- Charlie Dhe Fabrika e Çokollatës
Për të gjetur të gjitha librat me fjalën "The" në titull ju do të përdorni sintaksën e mëposhtme:
grep Librat
Rezultatet e mëposhtme do të kthehen:
- Goldilocks Dhe Tre Bears
- Bora e Bardhë dhe Shtatë Dwarfs
- Cat në kapelë
- Tre Derrat e Vogla
- Gruffalo
- Charlie Dhe Fabrika e Çokollatës
Në secilin rast, fjala "The" do të theksohet.
Vini re se kërkimi është i ndjeshëm ndaj rasti, kështu që nëse një prej titujve kishte "të" në vend të "The", atëherë nuk do të ishte kthyer.
Për të injoruar rastin mund të shtoni kalimin e mëposhtëm:
grep librat - padyshim
Ju gjithashtu mund të përdorni çelësin -i si më poshtë:
grep -i librat
02 nga 09
Kërkoni Për Një String Në Një File Duke përdorur Wildcards
Komanda grep është shumë e fuqishme. Ju mund të përdorni një numër të teknikave të përputhjes së modeleve për të filtruar rezultatet.
Në këtë shembull, unë do t'ju tregoj se si të kërkoni një varg në një skedar duke përdorur wildcards .
Imagjinoni që keni një skedar të quajtur vende me emrat e mëposhtëm skocez:
Aberdeen
Aberystwyth
Aberlour
Inverurie
Inverness
Newburgh
dre i ri
galloway i ri
glasgow
Edinburg
Nëse doni të gjeni të gjitha vendet me inver në emër përdorni sintaksën e mëposhtme:
grep inver * vende
Karakteri i yllit (*) qëndron për 0 ose shumë. Prandaj, nëse keni një vend të quajtur inverth ose një vend i quajtur inverness atëherë të dy do të kthehen.
Një tjetër kartë joligale që mund të përdorni është periudha (.). Ju mund ta përdorni këtë për të përputhur një letër të vetme.
grep inver.r vende
Komanda e mësipërme do të gjente vende të quajtura inverurie dhe inverver, por nuk do të gjenin të pavlefshme, sepse nuk mund të jetë vetëm një zëvendësues midis dy r-ve siç tregohet nga periudha e vetme.
Gjurmët e periudhës janë të dobishme, por mund të shkaktojnë probleme nëse keni një si pjesë të tekstit që po kërkoni.
Për shembull, shikoni në këtë listë të emrave të domain-it
- 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
Për të gjetur të gjitha around.coms ju mund të kërkoni vetëm duke përdorur sintaksën e mëposhtme:
grep * rreth * domainnames
Komanda e mësipërme do të binte nëse lista përmbante emrin e mëposhtëm:
- everydaylinuxuser.com/about.html
Për këtë arsye, mund të provoni sintaksën e mëposhtme:
grep * about.com domainnames
Kjo do të funksiononte mirë nëse nuk do të kishte një domain me emrin e mëposhtëm:
aboutycom.com
Për të kërkuar me të vërtetë për termin on.com do t'ju duhet të shpëtoni dot si më poshtë:
grep * rreth \ .com domainnames
Karakteristika përfundimtare për t'ju treguar është pikëpyetja e cila qëndron për zero ose një karakter.
Për shembull:
grep? ber placenames
Komanda e mësipërme do të kthehej aberdeen, aberystwyth ose edhe berwick.
03 nga 09
Kërko për vargjet në fillim dhe në fund të linjës Përdorni grep
Karakteri (^) dhe dollari ($) ju lejojnë të kërkoni për modelet në fillim dhe në fund të linjave.
Imagjinoni që keni një skedar të quajtur futbolli me emrat e ekipit në vijim:
- Blackpool
- Liverpul
- Manchester City
- Leicester City
- Manchester United
- Newcastle United
- FC United e Mançesterit
Nëse dëshironi të gjeni të gjitha ekipet që filluan me Manchester ju do të përdorni sintaksën e mëposhtme:
grep ^ Ekipet e Manchesterit
Komanda e mësipërme do të kthejë Manchester Cityn dhe Manchester Unitedin, por jo FC United Of Manchester.
Përndryshe ju mund të gjeni të gjitha ekipet që përfundojnë me United duke përdorur sintaksën e mëposhtme:
grep United $ ekipet
Komanda e mësipërme do të kthejë Manchester United dhe Newcastle United por jo FC United Of Manchester.
04 nga 09
Numërimi i numrit të ndeshjeve Përdorimi i grep
Nëse nuk doni të ktheni linjat aktuale që përputhen me një model duke përdorur grep, por vetëm doni të dini sa ka atje, ju mund të përdorni sintaksën e mëposhtme:
grep -c modeli inputfile
Nëse modeli përputhet dy herë atëherë numri 2 do të kthehej.
05 nga 09
Gjetja e të gjitha termave që nuk përputhen duke përdorur grep
Imagjinoni që të keni një listë të emrave të vendeve me vendet e renditura si më poshtë:
- aberdeen scotland
- Glasgow Scotland
- liverpool england
- kolwyn bay
- Londer, Angli
Ju mund të keni vënë re se gjiri kolwyn nuk ka ndonjë vend të lidhur me të.
Për të kërkuar të gjitha vendet me një vend ju mund të përdorni sintaksën e mëposhtme:
grep tokë $ vende
Rezultatet do të kthehen në të gjitha vendet përveç gjirit të kolwynit.
Kjo sigurisht që punon vetëm për vendet që përfundojnë në tokë (pothuajse shkencore).
Ju mund të anuloni zgjedhjen duke përdorur sintaksën e mëposhtme:
grep -v tokë $ vende
Kjo do të gjente të gjitha vendet që nuk përfundonin me tokën.
06 nga 09
Si të gjeni linjat bosh në skedarë Duke përdorur grep
Imagjinoni që ju keni një skedar hyrje që përdoret nga një aplikacion i palës së tretë që ndalon leximin e skedarit kur gjen një vijë bosh si më poshtë:
- aberdeen scotland
- skandinave inverly
- liverpool england
- kolwyn bay wales
Kur aplikacioni merr në vijë pas liverpool do të ndalojë leximin e kuptimit të gjirit të kolwynës është humbur plotësisht.
Ju mund të përdorni grep për të kërkuar linja bosh me sintaksën e mëposhtme:
grep ^ $ vende
Për fat të keq kjo nuk është veçanërisht e dobishme sepse ajo vetëm kthen linjat bosh.
Sigurisht që mund të merrni numërimin e numrit të linjave bosh si një kontroll për të parë nëse dosja është e vlefshme si më poshtë:
grep -c ^ $ vende
Sidoqoftë, do të ishte më e dobishme të njihni numrat e linjave që kanë një vijë bosh në mënyrë që t'i zëvendësoni ato. Këtë mund ta bëni me komandën e mëposhtme:
grep -n ^ $ vende
07 nga 09
Si të kërkoni për vargjet e shkronjave të mëdha apo të vogla Duke përdorur grep
Duke përdorur grep ju mund të përcaktoni se cilat rreshta në një skedë kanë shkronja të mëdha duke përdorur sintaksën e mëposhtme:
grep '[AZ]' filename
Kllapa katrore [] ju lejon të përcaktoni gamën e karaktereve. Në shembullin e mësipërm ajo përputhet me çdo karakter që është midis A dhe Z.
Prandaj, për të krahasuar karakteret e vogla, mund të përdorni sintaksën e mëposhtme:
grep '[az]' emri i skedarit
Nëse doni të përputhni vetëm letra dhe jo numra ose simbole të tjera ju mund të përdorni sintaksën e mëposhtme:
grep '[a-zA-Z]' emri i skedarit
Ju mund të bëni të njëjtën gjë me numrat si më poshtë:
grep '[0-9]' filename
08 nga 09
Duke kërkuar për modele përsëritëse Duke përdorur grep
Ju mund të përdorni kllapa curly {} për të kërkuar një model përsëritës.
Paramendoni që keni një skedar me numra telefoni si më poshtë:
- 055-1234
- 055-4567
- 555-1545
- 444-0167
- 444-0854
- 4549-2234
- x44-1234
Ju e dini se pjesa e parë e numrit duhet të jetë tre shifra dhe ju doni të gjeni linjat që nuk përputhen me këtë model.
Nga shembulli i mëparshëm ju e dini që [0-9] i kthen të gjithë numrat në një skedar.
Në këtë rast ne duam linjat që fillojnë me tre numra të ndjekur nga një vizë ndarëse (-). Ju mund ta bëni këtë me sintaksën e mëposhtme:
grep "^ [0-9] [0-9] [0-9] -" numra
Siç e dimë nga shembujt e mëparshëm, karat (^) do të thotë se vija duhet të fillojë me modelin e mëposhtëm.
[0-9] do të kërkojë ndonjë numër midis 0 dhe 9. Pasi kjo përfshihet tri herë ajo përputhet me 3 numra. Së fundi ka një vizë ndarëse për të treguar se një germë duhet të ketë sukses tre numrat.
Duke përdorur kllapa kaçurrela mund të bëni kërkimin më të vogël si më poshtë:
grep "^ [0-9] \ {3 \} -" numra
Slash shpëton {kllapa në mënyrë që ajo të funksionojë si pjesë e shprehjes së rregullt, por në thelb ajo që thotë kjo është [0-9] {3} që do të thotë çdo numër ndërmjet 0 dhe 9 tri herë.
Kllapat e dredhur mund të përdoren gjithashtu si më poshtë:
{5,10}
{5,}
{5,10} do të thotë se karakteri që kërkohet duhet të përsëritet të paktën 5 herë, por jo më shumë se 10, ndërsa {5,} do të thotë se karakteri duhet të përsëritet të paktën 5 herë, por mund të jetë më shumë se kaq.
09 nga 09
Përdorimi i rezultatit nga komandat e tjera Përdorimi i grep
Deri tani ne kemi shikuar përputhjen e modeleve brenda dosjeve individuale, por grep mund të përdorë outputin nga komandat e tjera si input për përputhjen e modeleve.
Një shembull i madh i kësaj është përdorimi i komandës ps e cila liston proceset aktive.
Për shembull, ekzekutoni komandën e mëposhtme:
ps -ef
Të gjitha proceset drejtuese në sistemin tuaj do të shfaqen.
Ju mund të përdorni grep për të kërkuar një proces të caktuar të drejtimit si më poshtë:
ps -ef | grep firefox