Piemērs Izmantojot Linux grep komandu

Ievads

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ā es parādīšu vairākus piemērus, kas palīdzēs jums izprast grep komandu.

01 no 09

Kā meklēt virkni failā, izmantojot GREP

Linux grep komanda.

Iedomājieties, ka jums ir teksta fails ar nosaukumu "grāmatas ar šādiem bērnu grāmatu nosaukumiem:

Lai atrastu visas grāmatas ar vārdu "The" virsrakstā, izmantotu šādu sintaksi:

grep grāmatas

Atgriež šādus rezultātus:

Katrā gadījumā tiks izcelts vārds "The".

Ņemiet vērā, ka 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ēstnesis

Jūs varat arī izmantot -i slēdzi šādi:

grep-i grāmatas

02 no 09

Meklē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:

aberdeen

aberistuve

aberlour

inverurie

inverness

Newburgh

jauns brieži

jauns galolajs

glasgow

Edinburga

Ja jūs vēlaties atrast visas vietas ar nosaukumu apgrieztu, izmantojiet šādu sintaksi:

grep inver * vietas

Zvaigznīte (*) aizstājējzīme ir 0 vai daudzi. Tāpēc, ja jums ir vieta, ko sauc par inverti vai vietu, ko sauc par inverness, tad abi tiek 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ās

Iepriekš 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

Lai atrastu visu about.com, jūs varētu vienkārši meklēt, izmantojot šādu sintaksi:

grep * par * domainnames

Iepriekš minētā komanda nokritīs, ja sarakstā tajā iekļauts šāds nosaukums:

Tādēļ varat izmēģināt šādu sintaksi:

grep * about.com domainnames

Tas darbojas labi, ja vien nav domēna ar šādu nosaukumu:

aboutycom.com

Lai tiešām meklētu terminu about.com, jums vajadzētu izvairīties no punkta šādi:

grep * par \ .com domainnames

Pē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 vietname

Iepriekš minētā komanda atgriezīsies Aberdīnā, aberistu vai pat berwick.

03 no 09

Meklē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:

Ja jūs vēlētos atrast visas komandas, kas sākās ar Mančesteru, jūs izmantotu šādu sintaksi:

Grep Mančestras komandas

Iepriekš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 $ komandas

Iepriekšminētā komanda atgriezīsies Manchester United un Newcastle United, bet ne FC United of Manchester.

04 no 09

Atbilstoš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 inputfile

Ja modelis tika saskaņots divreiz, tad numurs 2 tiks atgriezts.

05 no 09

Atrodiet visus noteikumus, kas neatbilst, izmantojot grep

Iedomājieties, ka jums ir vietu nosaukumu saraksts ar šādām valstīm:

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 $ vietas

Rezultā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 mainīt atlasi, izmantojot šādu sintaksi:

grep -v zeme $ vietas

Tas atrastu visas vietas, kas nebeidzās ar zemi.

06 no 09

Kā 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:

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 ^ $ vietas

Diemžē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 ^ $ vietas

Tomē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 ^ $ vietas

07 no 09

Kā 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 "[AZ]" faila nosaukums

Kvadrā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 '[az]' faila nosaukums

Ja vēlaties saskaņot tikai burtus, nevis ciparus vai citus simbolus, varat izmantot šādu sintaksi:

grep '[a-zA-Z]' filename

To var izdarīt ar šādiem numuriem:

grep '[0-9]' faila nosaukums

08 no 09

Meklē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:

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] -" cipari

Kā 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 \} -" cipari

Slī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.

09 no 09

Izmantojot 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 -ef

Tiks 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 firefox

Kopsavilkums

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.