Skip to main content

Pavyzdys naudoja "Linux grep Command"

Anonim

Linux grep komanda naudojama kaip įvesties filtravimo metodas. GREP reiškia "Global Regular Expression" spausdintuvą, todėl, norint jį efektyviai naudoti, turėtumėte turėti tam tikrų žinių apie įprastas išraiškas.

Šiame straipsnyje jūs sužinosite keletą pavyzdžių, kurie padės suprasti grep komandą.

01 iš 09

Kaip ieškoti eilutės failo naudojant GREP

Įsivaizduokite, kad turite tekstinį failą, pavadintą knygomis su tokiais vaikų knygų pavadinimais:

  • Robinas Hudas
  • Raudonkepuraitė
  • Piteris Penas
  • Goldilokai ir trys lokiai
  • Snieguolė ir septyni nykštukai
  • Pinnochio
  • Katė kepurėje
  • Trys mažos kiaulės
  • Gruffalo
  • Čarlis ir šokolado fabrikas

Norėdami rasti visas knygas pavadinimu "The", naudokite šį sintaksę:

grep knygos

Bus grąžinami šie rezultatai:

  • Goldilokai ir trys lokiai
  • Snieguolė ir septyni nykštukai
  • Katė kepurėje
  • Trys mažos kiaulės
  • Gruffalo
  • Čarlis ir šokolado fabrikas

Kiekvienu atveju bus paryškintas žodis "The".

Paieška yra didžiosios ir mažosios raidės, taigi, jei vienam iš pavadinimų būtų ", o ne" The ", jis nebūtų grąžintas.

Norėdami ignoruoti bylą, galite pridėti šį jungiklį:

knygos "grep" - negoryje

Taip pat galite naudoti -i jungiklį taip:

grep-i knygos

Tęsti skaitymą žemiau

02 iš 09

Ieškoti failo eilutėje, naudojant laukinius simbolius

"Grep" komanda yra labai galinga. Norėdami filtruoti rezultatus, galite naudoti daugybę modeliavimo metodų.

Šiame pavyzdyje parodysiu, kaip ieškoti eilutės failo, naudojant pakaitos simbolius.

Įsivaizduokite, kad turite rinkmeną, pavadintą vietomis su šiais vietovardžiais:

AberdeenAberystwythaberlourinverurieInvernessNewburghnaujas elniasnaujas gallowayglasgowEdinburgas

Jei norite rasti visas vietas su invertu pavadinimu, naudokite šį sintaksę:

grep inver * vietose

Žvaigždute (*) pakaitos simbolis reiškia 0 arba daugelį. Todėl, jei turite vietą, vadinamą invernu arba vietą, vadinamą Inverness, tuomet abi bus grąžintos.

Kitas pakaitos simbolis, kurį galite naudoti, yra periodas (.). Galite naudoti tai, kad atitiktumėte vieną raidę.

grep inver.r vietų

Pirmiau aprašyta komanda ras vietoves, vadinamas inverurie ir inverary, bet nebūtų rasti invereerie, nes tarp dviejų r, tarp jų ir viename etape, gali būti tik viena užkarda.

Periodo pakaitos simbolis yra naudingas, tačiau jis gali sukelti problemų, jei turite vieną paieškos teksto dalį.

Pvz., Pažvelkite į šį domenų vardų sąrašą

  • linux.about.com
  • pcsupport.about.com
  • mp3.about.com
  • minecraft.about.com
  • androidgames.about.com
  • netforbeginners.about.com
  • kasdienlinuxuser.com
  • google.co.uk
  • google.au
  • direct.gov.uk

Norėdami rasti viską apie .com, galite tiesiog ieškoti naudodami šį sintaksę:

grep * apie * domainnames

Aukščiau pateikta komanda sumažėtų, jei šiame sąraše būtų toks pavadinimas:

  • everydaylinuxuser.com/about.html

Todėl galėtumėte išbandyti tokį sintaksę:

grep * about.com domainnames

Tai veiktų gerai, jei nebūtų domeno su tokiu pavadinimu:

aboutycom.com

Norėdami iš tikrųjų ieškoti termino about.com, turėtumėte ištrinti tašką taip:

grep * apie .com domainnames

Galutinė pakaitalas, rodantis jus, yra klausimo ženklas, kuris reiškia nulį ar vieną simbolį.

Pavyzdžiui:

grepber vietovių pavadinimai

Pirmiau minėta komanda grįš Aberdiną, Aberystwythą ar net Berwicką.

Tęsti skaitymą žemiau

03 iš 09

Ieškoti eilučių pradžioje ir pabaigoje linijos naudojant grep

Simbolis "karatas" (^) ir doleris ($) leidžia ieškoti raštų linijų pradžioje ir pabaigoje.

Įsivaizduokite, kad turite rinkmeną, pavadintą "futbolas", nurodydami šiuos komandos pavadinimus:

  • Blackpool
  • Liverpulis
  • Mančesterio miestas
  • Leicester City
  • Manchester United
  • Newcastle United
  • FC United Of Manchester

Jei norėjote rasti visas komandas, kurios prasidėjo Mančesteryje, naudokitės šia sintaksė:

Grep Mančesterio komandos

Pirmiau minėta komanda grįš "Manchester City" ir "Manchester United", bet ne "FC United of Manchester".

Arba galite rasti visas komandas, baigusias United su šia sintaksė:

grep United $ komandos

Pirmiau minėta komanda grįš į "Manchester United" ir "Newcastle United", bet ne "FC United of Manchester".

04 iš 09

Skaičiavimas atitikčių skaičiaus naudojant grep

Jei nenorite grąžinti faktinių eilučių, atitinkančių modelį naudodamiesi grep, bet jūs tiesiog norite sužinoti, kiek jų yra, galite naudoti šį sintaksę:

grep-c modelio failas

Jei modelis buvo suderintas du kartus, numeris 2 bus grąžintas.

Tęsti skaitymą žemiau

05 iš 09

Ieškoti visų sąlygų, kurios nesuderina naudodamos grep

Įsivaizduokite, kad turite vietovardžių sąrašą su nurodytomis šalimis:

  • Aberdeen Škotija
  • Glazgas Škotija
  • Liverpulis Anglija
  • Colwyn įlanka
  • Londonas, Anglija

Galbūt pastebėjote, kad Kolvino įlankoje nėra su ja susijusios šalys.

Norėdami ieškoti visų vietų su šalimi, galite naudoti šį sintaksę:

grep land $ places

Rezultatai grąžinami visose vietose, išskyrus Colwyn įlanką.

Tai akivaizdžiai veikia tik vietose, kurios baigiasi žeme (vargu ar mokslinė).

Galite pakeisti pasirinkimą naudodami šią sintaksę:

grep -v land $ places

Tai surastų visas vietas, kurios nesibaigė žeme.

06 iš 09

Kaip rasti tuščias eilutes failuose naudojant grep

Įsivaizduokite, kad turite įvesties failą, kurį naudoja trečiosios šalies programa, kuri nebegali skaityti failo, kai ji nustato tuščią eilutę taip:

  • Aberdeen Scotland
  • Invernesas Škotija
  • Liverpulio Anglija
  • Kolvino įlanka

Kai programa pateks į liniją po Liverpulio, ji nustos skaityti, todėl "Colwyn" įlankoje bus visiškai praleistas.

Galite naudoti grep, norėdami ieškoti tuščių eilučių su šia sintaksė:

grep ^ $ vietų

Deja, tai nėra ypač naudinga, nes ji tiesiog grąžina tuščias eilutes.

Žinoma, jūs galite gauti skaičių tuščių eilučių, kaip patikrinti, ar failas galioja taip:

grep-c ^ $ vietų

Vis dėlto būtų naudingiau žinoti eilučių numerius, kurie turi tuščią eilutę, kad galėtumėte juos pakeisti. Tai galite padaryti naudodami šią komandą:

grep-n ^ $ vietų

Tęsti skaitymą žemiau

07 iš 09

Kaip ieškoti didžiųjų ar mažųjų raidžių eilučių naudojant grep

Naudojant grep galite nustatyti, kurios eilutės failo yra didžiosios raidės naudojant šią sintaksę:

grep "A-Z" failo vardas

Laukinės skliautės leidžia nustatyti simbolių asortimentą. Ankstesniame pavyzdyje jis atitinka bet kurį simbolį, kuris yra tarp A ir Z.

Todėl, kad atitiktų mažos raidės, galite naudoti šį sintaksę:

grep "a-z" failo vardas

Jei norite susieti tik raides, o ne skaitinius ar kitus simbolius, galite naudoti tokį sintaksę:

grep "a-zA-Z" failo vardas

Galite padaryti tą patį su skaičiais taip:

grep '0-9' failo vardas 08 iš 09

Ieškote kartotinių modelių, naudojant grep

Jei norite ieškoti pakartojančio modelio, galite naudoti garbanotas skliaustus {}.

Įsivaizduokite, kad turite failą su telefono numeriais:

  • 055-1234
  • 055-4567
  • 555-1545
  • 444-0167
  • 444-0854
  • 4549-2234
  • x44-1234

Jūs žinote, kad pirmoji numerio dalis turi būti trys skaitmenys ir norite rasti linijas, kurios neatitinka šio modelio.

Iš ankstesnio pavyzdžio žinote, kad 0-9 grąžina visus numerius rinkmenoje.

Šiuo atveju mes norime eilučių, kurios prasideda trim skaičiais, po kurių yra brūkšnelis (-). Tai galite padaryti naudodami šią sintaksę:

grep "^ 0-9 0-9 0-9 -" skaičiai

Kaip mes žinome iš ankstesnių pavyzdžių, karatas (^) reiškia, kad linija turi prasidėti šia lentele.

0-9 ieškos bet kokio skaičiaus tarp 0 ir 9. Kadangi tai yra tris kartus, jis atitinka 3 skaičiai. Galiausiai yra brūkšnys, rodantis, kad brūkšneliu turi būti trys skaičiai.

Naudodamiesi garbanotomis skliaustėmis, galite atlikti mažesnę paiešką taip:

grep "^ 0-9 (3 ) -" skaičiai

Vertikalusis brūkšnys ištrūksta iš {bracket, kad jis veiktų kaip reguliaraus išraiškos dalis, bet iš esmės tai yra 0-9 {3}, o tai reiškia bet kurį skaičių nuo 0 iki 9 tris kartus.

Garbanotieji skliautai taip pat gali būti naudojami taip:

{5,10}{5,}

{5,10} reiškia, kad ieškomas simbolis turi būti kartojamas ne mažiau kaip 5 kartus, bet ne daugiau kaip 10, o {5,} reiškia, kad simbolis turi būti kartojamas ne mažiau kaip 5 kartus, bet jis gali būti didesnis už tą.

Tęsti skaitymą žemiau

09 iš 09

Naudojimas išvesties iš kitų komandų naudojant grep

Kol kas mes pažvelgė į modelio atitikimą atskiruose failuose, bet grep gali naudoti kitų komandų išvestį kaip modelio atitikimo įvestį.

Puikus pavyzdys yra ps komanda, kurioje išvardijami aktyvūs procesai.

Pavyzdžiui paleiskite šią komandą:

ps-ef

Bus rodomi visi jūsų sistemoje vykdomi procesai.

Galite naudoti grep, norėdami ieškoti konkretaus paleidimo proceso taip:

ps -ef | grep firefox

Santrauka

Grep komanda yra pagrindinė Linux komanda, ir tai yra ta, kuri verta mokytis, nes tai padės padaryti jūsų gyvenimą daug lengviau ieškant failų ir procesų naudojant terminalą.