Linux grep komanda tiek izmantota kā ievades filtrēšanas metode. GREP nozīmē globālo regulāro izteiksmju printeri, un tāpēc, lai to efektīvi izmantotu, jums vajadzētu būt zināšanām par regulārām izteiksmēm.
Šajā rakstā jūs uzzināsiet vairākus piemērus, kas palīdzēs jums izprast grep komandu.
01 no 09Kā meklēt virkni failā, izmantojot GREP

Iedomājieties, ka jums ir teksta fails ar nosaukumu "grāmatas ar šādiem bērnu grāmatu nosaukumiem:
- Robins Huds
- Mazā sarkanā ziza
- Pīters Pens
- Goldilocks un trīs lāči
- Sniega balta un septiņi punduri
- Pinnohija
- Kaķis cepurī
- Trīs mazās cūkas
- Gruffalo
- Čārlijs un šokolādes fabrika
Lai atrastu visas grāmatas ar vārdu "The" virsrakstā, izmantotu šādu sintaksi:
grep grāmatasAtgriež šādus rezultātus:
- Goldilocks un trīs lāči
- Sniega balta un septiņi punduri
- Kaķis cepurī
- Trīs mazās cūkas
- Gruffalo
- Čārlijs un šokolādes fabrika
Katrā gadījumā tiks izcelts vārds "The".
Meklēšana ir reģistrjutīga, tādēļ, ja kādam no nosaukumiem bija ", nevis" The ", tad tas nebūtu atgriezies.
Lai ignorētu lietu, varat pievienot šādu slēdzi:
Grup grāmatas - vēstnesisJūs varat arī izmantot -i slēdzi šādi:
Turpiniet lasīt zemāk
02 no 09Meklēt virkni failā, izmantojot aizstājējzīmes
Grep komanda ir ļoti spēcīga. Lai filtrētu rezultātus, varat izmantot virkni paraugu saskaņošanas paņēmienu.
Šajā piemērā es parādīšu, kā meklēt virknes failu, izmantojot aizstājējzīmes.
Iedomājieties, ka jums ir fails, ko sauc par vietām ar šādiem Skotijas vietvārdiem:
aberdeenaberistuveaberlourinverurieinvernessNewburghjauns briežijauns galolajsglasgowEdinburgaJa jūs vēlaties atrast visas vietas ar nosaukumu apgrieztu, izmantojiet šādu sintaksi:
grep inver * vietasZvaigznīte (*) aizstājējzīme ir 0 vai daudzi. Tāpēc, ja jums ir vieta, ko sauc par inverto vai vietu, ko sauc par Inverness, tad abi tiks atgriezti.
Vēl viena aizstājējzīme, kuru var izmantot, ir periods (.). Jūs varat to izmantot, lai atbilstu vienai vēstulei.
grep inver.r vietāsIepriekš minētā komanda atradīs vietas, ko sauc par "inverurie" un "inverary", bet neatrodas invereerie, jo starp diviem r var būt tikai viens aizstājējzīme, ko apzīmē ar vienu periodu.
Periodiska aizstājējzīme ir noderīga, taču tā var radīt problēmas, ja jums ir kāds kā meklējamā teksta daļa.
Piemēram, aplūkojiet šo domēnu nosaukumu sarakstu
- 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
Lai atrastu visu par .com, jūs varētu vienkārši meklēt, izmantojot šādu sintaksi:
grep * par * domainnamesIepriekš minētā komanda nokritīs, ja sarakstā tajā iekļauts šāds nosaukums:
- everydaylinuxuser.com/about.html
Tādēļ varat izmēģināt šādu sintaksi:
grep * about.com domainnamesTas darbojas labi, ja vien nav domēna ar šādu nosaukumu:
aboutycom.comLai tiešām meklētu terminu about.com, jums vajadzētu izvairīties no punkta šādi:
grep * par .com domainnamesPēdējais aizstājējraksts, kas jums parādīsies, ir jautājuma zīme, kas nozīmē nulli vai vienu rakstzīmi.
Piemēram:
grepber vietnameIepriekš minētā komanda atgriezīsies Aberdīnā, aberistu vai pat berwick.
Turpiniet lasīt zemāk
03 no 09Meklējiet virknes sākumā un beigās, izmantojot grep
Karātos (^) un dolāra ($) simbols ļauj meklēt modeļus līniju sākumā un beigās.
Iedomājieties, ka jums ir futbols ar šādiem komandas nosaukumiem:
- Blackpool
- Liverpūle
- Manchester City
- Leicester City
- Manchester United
- Newcastle United
- FC United of Manchester
Ja jūs vēlētos atrast visas komandas, kas sākās ar Mančesteru, jūs izmantotu šādu sintaksi:
Grep Mančestras komandasIepriekšminētā komanda atgriezīsies Manchester City un Manchester United, bet ne FC United of Manchester.
Alternatīvi, jūs varat atrast visas komandas, kas beidzas ar United, izmantojot šādu sintaksi:
grep United $ komandasIepriekšminētā komanda atgriezīsies Manchester United un Newcastle United, bet ne FC United of Manchester.
04 no 09Atbilstošo skaitļu skaitīšana, izmantojot grep
Ja jūs nevēlaties atgriezt faktiskās līnijas, kas atbilst modelim, izmantojot grep, bet jūs vienkārši vēlaties uzzināt, cik daudz ir, jūs varat izmantot šādu sintaksi:
grep-c modelis inputfileJa modelis tika saskaņots divreiz, tad numurs 2 tiks atgriezts.
Turpiniet lasīt zemāk
05 no 09Atrodiet visus noteikumus, kas neatbilst, izmantojot grep
Iedomājieties, ka jums ir vietu nosaukumu saraksts ar šādām valstīm:
- Aberdeen Skotija
- glasgow skotija
- Liverpūle Anglija
- Colwyn līcis
- Londona Anglija
Jūs, iespējams, esat pamanījis, ka Colwyn līcim nav nevienas asociētas valsts.
Lai meklētu visas vietas ar valsti, jūs varētu izmantot šādu sintaksi:
grep zemes $ vietasRezultāti atgriežas visās vietās, izņemot Colwyn līcī.
Tas acīmredzami darbojas tikai vietām, kas beidzas ar zemi (gandrīz zinātniski).
Jūs varat apgriezt atlasi, izmantojot šādu sintaksi:
grep -v zeme $ vietasTas atrastu visas vietas, kas nebeidzās ar zemi.
06 no 09Kā atrast tukšās līnijas failos, izmantojot grep
Iedomājieties, ka jums ir ievades fails, ko lieto trešās puses lietojumprogramma, kas pārtrauc lasīt failu, kad tā atrod tukšu rindu šādi:
- aberdeen skotlande
- invernesa skotlande
- Liverpūles Anglija
- Colwyn līča velsa
Kad lietojumprogramma nokļūst līnijā pēc liverpūles, tā pietrūks lasījumam, tāpēc kolvīna līcis ir pilnībā izlaists.
Jūs varat izmantot grep, lai meklētu tukšas rindas ar šādu sintaksi:
grep ^ $ vietasDiemžēl tas nav īpaši noderīgi, jo tas vienkārši atgriež tukšās rindiņas.
Jūs, protams, varēsiet noskaidrot tukšo rindu skaitu kā pārbaudi, lai pārliecinātos, vai fails ir derīgs šādi:
grep-c ^ $ vietasTomēr būtu lietderīgāk zināt līniju numurus, kuriem ir tukša līnija, lai tos varētu aizstāt. To var izdarīt ar šādu komandu:
grep-n ^ $ vietasTurpiniet lasīt zemāk
07 no 09Kā meklēt virknes augšējā vai apakšējā rindiņā ar grep
Izmantojot grep, jūs varat noteikt, kuras rindas failā ir lielie rakstzīmes, izmantojot šādu sintaksi:
grep 'A-Z' filenameKvadrātiekavas ļauj jums noteikt rakstzīmju diapazonu. Iepriekš minētajā piemērā tas atbilst jebkuram simbolam, kas ir no A līdz Z.
Tādēļ, lai atbilstu mazajiem burtiem, varat izmantot šādu sintaksi:
grep 'a-z' faila nosaukumsJa vēlaties saskaņot tikai burtus, nevis ciparus vai citus simbolus, varat izmantot šādu sintaksi:
grep 'a-zA-Z' filenameTo var izdarīt ar šādiem numuriem:
grep '0-9' faila nosaukums 08 no 09Meklējat atkārtotus modeļus, izmantojot grep
Lai meklētu atkārtotu modeli, varat izmantot cirtainas iekavas {}.
Iedomājieties, ka jums ir fails ar tālruņa numuriem:
- 055-1234
- 055-4567
- 555-1545
- 444-0167
- 444-0854
- 4549-2234
- x44-1234
Jūs zināt, ka skaitļa pirmajai daļai jābūt trīs cipariem un vēlaties atrast līnijas, kas neatbilst šim modelim.
No iepriekšējā piemēra jūs zināt, ka 0-9 atgriež visus numurus failā.
Šajā gadījumā mēs vēlamies, lai līnijas, kas sākas ar trim numuriem, kam seko defise (-). To var izdarīt ar šādu sintaksi:
grep "^ 0-9 0-9 0-9 -" cipariKā mēs zinām no iepriekšējiem piemēriem, karats (^) nozīmē, ka līnijai jāsākas ar šādu modeli.
0-9 meklē jebkuru skaitli no 0 līdz 9. Tā kā tas ir iekļauts trīs reizes, tas atbilst 3 cipariem. Visbeidzot, ir defise, lai apzīmētu, ka defisam ir jāpieņem trīs skaitļi.
Izmantojot cirvīšu skavu, jūs varat padarīt meklēšanu mazāku šādi:
grep "^ 0-9 {3 } -" cipariSlīpsvītra izlaiž {bracket tā, lai tā darbotos kā daļa no regulārās izteiksmes, bet pēc būtības tas ir 0-9 {3}, kas nozīmē jebkuru skaitu no 0 līdz 9 trīs reizes.
Liektās skavas var izmantot arī šādi:
{5,10}{5,}{5,10} nozīmē, ka meklētais raksturs jāatkārto vismaz 5 reizes, bet ne vairāk kā 10, savukārt {5,} simbols ir jāatkārto vismaz 5 reizes, bet tas var būt lielāks par to.
Turpiniet lasīt zemāk
09 no 09Izmantojot izvadi no citām komandām, izmantojot grep
Līdz šim mēs esam apskatījuši modeļu saskaņošanu atsevišķos failos, bet grep var izmantot izvadi no citām komandām kā izejmateriālu paraugu saskaņošanai.
Lielisks piemērs tam ir izmantot komandu ps, kurā uzskaitīti aktīvie procesi.
Piemēram, palaidiet šādu komandu:
ps -efTiks parādīti visi jūsu sistēmā esošie procesi.
Jūs varat izmantot grep, lai meklētu konkrētu darbības procesu, šādi:
ps -ef | grep firefoxKopsavilkums
Grep komanda ir būtiska Linux komanda, un tā ir tā, kas ir labi vērts mācīties, jo tas padarīs jūsu dzīvi daudz vieglāku, meklējot failus un procesus, lietojot termināli.













