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 boste izvedeli številne primere, ki vam bodo pomagali razumeti ukaz grep.
01 od 09Kako poiskati niz v datoteki z uporabo GREP
Predstavljajte si, da imate besedilno datoteko z imeni knjig z naslednjimi otroškimi naslovi:
- Robin Hood
- Rdeča kapica
- Peter Pan
- Goldilocks in tri medvedi
- Snežno bela in sedem palčkov
- Pinnochio
- Mačka v klobuk
- Trije majhni prašiči
- Gruffalo
- Charlie in tovarna čokolade
Če želite v naslovu najti vse knjige z besedo "The", uporabite naslednjo sintakso:
grep KnjigeVrnejo se naslednji rezultati:
- Goldilocks in tri medvedi
- Snežno bela in sedem palčkov
- Mačka v klobuk
- Trije majhni prašiči
- Gruffalo
- Charlie in tovarna čokolade
V vsakem primeru bo poudarjena beseda "The".
Iskanje je občutljivo na velike ali 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 igerStik -i lahko uporabite tudi takole:
Nadaljuj branje spodaj
02 od 09Išč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:
aberdeenaberistvitAberlourInverurieInvernessNewburghnov jelennovi gallowayglasgowedinburghČe želite poiskati vsa mesta z inver v imenu, uporabite naslednjo sintakso:
grep inver * mestaZ zvezdicami (*) je znaka 0 ali veliko. Torej, če imate kraj, ki se imenuje inver ali kraj, imenovan Inverness, se bosta vrnili oba.
Drug nadomestni znak, ki ga lahko uporabite, je obdobje (.). To lahko uporabite za ujemanje ene črke.
grep inver.r krajevZgornji 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
- 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
Če želite poiskati vse o .com, ki jih lahko preprosto iščete po naslednji sintaksi:
grep * o * domenskih imenZgornji ukaz bi padel, če bi v seznamu vsebovalo naslednje ime:
- everydaylinuxuser.com/about.html
Zato lahko poskusite naslednjo skladnjo:
grep * about.com domenskih imenTo 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 imenKončni nadomestni znak, ki vam bo pokazal, je vprašanje, ki pomeni nič ali en znak.
Na primer:
grep? ber placenamesZgornji ukaz bi vrnil Aberdeen, Aberystwyth ali celo berwick.
Nadaljuj branje spodaj
03 od 09Išč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:
- Blackpool
- Liverpool
- Manchester City
- Leicester City
- Manchester United
- Newcastle United
- FC United Of Manchester
Če bi želeli najti vse ekipe, ki so se začele z Manchesterom, bi uporabili naslednjo sintakso:
grep ^ ekipe ManchesterZgornji ukaz bi vrnil Manchester City in Manchester United, ne pa FC United Of Manchester.
Druga možnost je, da lahko najdete vse ekipe, ki se konča z Združenimi državami, s pomočjo naslednje sintakse:
grep Združene $ ekipeZgornji ukaz se bo vrnil v Manchester United in Newcastle United, ne pa 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.
Nadaljuj branje spodaj
05 od 09Iskanje vseh pogojev, ki se ne ujemajo z uporabo grep
Predstavljajte si, da imate seznam imen mest z navedenimi državami:
- Aberdeen Škotska
- Glasgow Škotska
- Liverpool Anglija
- colwyn zaliv
- London England
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).
Izbris lahko izberete s pomočjo naslednje sintakse:
grep -v zemljo $ mestaTo bi našli vse kraje, ki se niso končali z zemljo.
06 od 09Kako 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:
- Aberdeen Škotska
- Inverness Škotska
- Liverpool england
- Colwyn Bay zaliv
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 ^ $ mestNa ž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 ^ $ mestVendar bi bilo bolje uporabiti številke vrstic, ki imajo prazno črto, tako da jih lahko zamenjate. To lahko storite z naslednjim ukazom:
grep-n ^ $ mestNadaljuj branje spodaj
07 od 09Kako 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 'A-Z' filenameKvadratni 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 'a-z' filenameČe želite ujemati le črke in ne številke ali druge simbole, lahko uporabite naslednjo sintakso:
grep 'a-zA-Z' filenameEnako lahko storite s številkami, kot sledi:
grep '0-9' filename 08 od 09Iskanje 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:
- 055-1234
- 055-4567
- 555-1545
- 444-0167
- 444-0854
- 4549-2234
- x44-1234
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 -" številkeKot 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.
Nadaljuj branje spodaj
09 od 09Uporaba 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 -efPrikaž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 firefoxPovzetek
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.