Primeri uporabe ukaza Linux grep

Uvod

Ukaz Linux grep se uporablja kot metoda za filtriranje vnosa.

GREP je Global Regular Expression Printer in zato, da bi ga učinkovito uporabljali, bi morali imeti nekaj znanja o rednih izrazih.

V tem članku vam bom pokazal vrsto primerov, ki vam bodo pomagali razumeti ukaz grep.

01 od 09

Kako poiskati niz v datoteki z uporabo GREP

Ukaz grep Linux.

Predstavljajte si, da imate besedilno datoteko z imeni knjig z naslednjimi otroškimi naslovi:

Če želite v naslovu najti vse knjige z besedo "The", uporabite naslednjo sintakso:

grep Knjige

Vrnejo se naslednji rezultati:

V vsakem primeru bo poudarjena beseda "The".

Upoštevajte, da je iskanje občutljivo na velike in male črke, če je eden od naslovov "namesto" "The", potem ne bi bil vrnjen.

Če želite prezreti primer, lahko dodate naslednje stikalo:

grep knjige - igranje iger

Stik -i lahko uporabite tudi takole:

grep-i knjige

02 od 09

Išči niz v datoteki s pomočjo nadomestnih znakov

Grep ukaz je zelo močan. Za filtriranje rezultatov lahko uporabite številne tehnike ujemanja vzorcev.

V tem primeru vam pokažem, kako po nizu znakov poiščite niz v datoteki.

Predstavljajte si, da imate datoteko z imeni krajev z naslednjimi škotskimi mestnimi imeni:

aberdeen

aberistvit

Aberlour

Inverurie

Inverness

Newburgh

nov jelen

novi galloway

glasgow

edinburgh

Če želite poiskati vsa mesta z inver v imenu, uporabite naslednjo sintakso:

grep inver * mesta

Z zvezdicami (*) je znaka 0 ali veliko. Torej, če imate kraj, ki se imenuje inver ali kraj, imenovan inverness, bi bili oba vrnjeni.

Drug nadomestni znak, ki ga lahko uporabite, je obdobje (.). To lahko uporabite za ujemanje ene črke.

grep inver.r krajev

Zgornji ukaz najde kraje, ki se imenujejo inveruri in inverary, vendar ne najdejo inverzije, ker je med dvema r, ki jih označuje posamezno obdobje, lahko samo en nadomestek.

Črkovno obdobje je koristno, vendar lahko povzroči težave, če jih imate kot del besedila, ki ga iščete.

Na primer preglejte ta seznam domenskih imen

Če želite poiskati vse o spletnem mestu o.com, lahko poiščete samo naslednjo sintakso:

grep * o * domenskih imen

Zgornji ukaz bi padel, če bi v seznamu vsebovalo naslednje ime:

Zato lahko poskusite naslednjo skladnjo:

grep * about.com domenskih imen

To bi delovalo ok, razen če je bila domena z naslednjim imenom:

aboutycom.com

Če želite resnično poiskati izraz o spletnem mestu, bi se morali izogniti piki, kot sledi:

grep * o \ .com domenskih imen

Končni nadomestni znak, ki vam bo pokazal, je vprašanje, ki pomeni nič ali en znak.

Na primer:

grep? ber placenames

Zgornji ukaz bi vrnil Aberdeen, Aberystwyth ali celo berwick.

03 od 09

Išči žice na začetku in koncu vrstice Uporaba grep

Karat (^) in dolar ($) simbol vam omogočata iskanje vzorcev na začetku in koncu vrstic.

Predstavljajte si, da imate datoteko pod imenom nogomet z naslednjimi imeni skupin:

Če bi želeli najti vse ekipe, ki so se začele z Manchesterom, bi uporabili naslednjo sintakso:

grep ^ ekipe Manchester

Zgornji ukaz bi vrnil Manchester City in Manchester United, ne pa FC United Of Manchester.

Druga možnost je, da najdete vse ekipe, ki se konča z Združenimi državami, s pomočjo naslednje sintakse:

grep Združene $ ekipe

Zgornji ukaz bi vrnil Manchester United in Newcastle United, vendar ne FC United Of Manchester.

04 od 09

Štetje števila zadetkov Uporaba grep

Če ne želite vrniti dejanskih vrstic, ki se ujemajo z vzorcem z grep, ampak samo želite vedeti, koliko jih lahko uporabite, sledite sintaksi:

grep -c vzorec vhodna datoteka

Če je vzorec dvakrat ujemal, bo številka 2 vrnjena.

05 od 09

Iskanje vseh pogojev, ki se ne ujemajo z uporabo grep

Predstavljajte si, da imate seznam imen mest z navedenimi državami:

Morda ste opazili, da Colwyn Bay nima nobene države, ki je z njo povezana.

Če želite poiskati vsa mesta z državo, lahko uporabite naslednjo sintakso:

grep zemljišč $

Vrnjeni rezultati bi bili vsi kraji, razen za zaliv Colwyn.

To seveda deluje samo za kraje, ki se končajo v kopnem (komaj znanstveno).

Izberete lahko z naslednjo sintakso:

grep -v zemljo $ mesta

To bi našli vse kraje, ki se niso končali z zemljo.

06 od 09

Kako najti prazne črte v datotekah z grep

Predstavljajte si, da imate vhodno datoteko, ki jo uporablja tretja oseba, ki preneha brati datoteko, ko najde prazno črto, kot sledi:

Ko bo aplikacija prišla do črte po liverpoolu, bo prenehala branje, kar pomeni, da se Colwyn zaliv v celoti zgreši.

Grep lahko uporabite za iskanje praznih vrstic z naslednjo sintakso:

grep ^ $ mest

Na žalost to ni posebej uporabno, ker samo vrne prazne črte.

Seveda lahko preberete število praznih vrstic kot preverjanje, ali je datoteka veljavna, kot sledi:

grep -c ^ $ mest

Vendar bi bilo bolje uporabiti številke vrstic, ki imajo prazno črto, tako da jih lahko zamenjate. To lahko storite z naslednjim ukazom:

grep-n ^ $ mest

07 od 09

Kako poiskati žice z nadrejenimi ali manjšimi črkami Uporaba grep

Z uporabo grep lahko določite, katere vrstice v datoteki imajo velike črke z naslednjo sintakso:

grep '[AZ]' ime datoteke

Kvadratni oklepaji [] vam omogočajo, da določite obseg znakov. V zgornjem primeru se ujema z znakom, ki je med A in Z.

Zato, da se ujemajo z malimi črkami, lahko uporabite naslednjo sintakso:

grep '[az]' filename

Če želite ujemati le črke in ne številke ali druge simbole, lahko uporabite naslednjo sintakso:

grep '[a-zA-Z]' filename

Enako lahko storite s številkami, kot sledi:

grep '[0-9]' filename

08 od 09

Iskanje ponavljajočih se vzorcev z grep

Lahko uporabite kodne oklepaje {}, da poiščete ponavljajoč se vzorec.

Predstavljajte si, da imate datoteko s telefonskimi številkami, kot sledi:

Veš, da mora biti prvi del števila trimestna in da želite najti vrstice, ki se ne ujemajo s tem vzorcem.

Iz prejšnjega primera veste, da [0-9] vrne vse številke v datoteki.

V tem primeru želimo vrstice, ki se začnejo s tremi številkami, ki jim sledi vezaj (-). To lahko storite z naslednjo sintakso:

grep "^ [0-9] [0-9] [0-9] -" številke

Kot vemo iz prejšnjih primerov, karat (^) pomeni, da se mora vrstica začeti z naslednjim vzorcem.

[0-9] bo iskal poljubno število med 0 in 9. Ker je to trikrat vključeno, se ujema z 3 številkami. Nazadnje je vezaj, ki označuje, da mora vezati tri številke.

Z uporabo kodranih oklepaj lahko iskanje manjšo, kot sledi:

grep "^ [0-9] \ {3 \} -" številke

Črta poševnica uide tako, da deluje kot del regularnega izraza, vendar v bistvu to pomeni [0-9] {3}, kar pomeni, da je število med 0 in 9 trikrat.

Kovinske oklepaje se lahko uporabijo tudi na naslednji način:

{5,10}

{5,}

{5,10} pomeni, da je treba iskani znak ponavljati vsaj 5-krat, vendar ne več kot 10, medtem ko {5,} pomeni, da je treba znak ponoviti vsaj 5-krat, vendar je lahko večji od tega.

09 od 09

Uporaba izhodov iz drugih ukazov Uporaba grep

Do zdaj smo pregledali ujemanje vzorcev znotraj posameznih datotek, vendar lahko grep uporabi izhod iz drugih ukazov kot vhod za ujemanje vzorcev.

Dober primer tega je uporaba ukaza ps, ki navaja aktivne procese.

Na primer, zaženite ta ukaz:

ps -ef

Prikažejo se vsi tekoči procesi v vašem sistemu.

Grep lahko uporabite za iskanje določenega postopka izvajanja na naslednji način:

ps -ef | grep firefox

Povzetek

Ukaz grep je temeljni ukaz Linux in je vreden učenja, saj bo vaše življenje veliko lažje pri iskanju datotek in procesov pri uporabi terminala.