Šiame straipsnyje paaiškinsime grep naudingumo naudojimą su skirtingais pavyzdžiais. Norėdami paaiškinti šiame straipsnyje nurodytas komandas ir metodus, naudosime „Debian 10“.
„Grep“ diegimas
„Grep“ įdiegta daugumoje „Linux“ paskirstymų. Tačiau jei jūsų sistemoje jo nėra, galite jį įdiegti naudodami šį metodą terminale:
$ sudo apt-get install grepNaudojant „Grep“
Čia yra pagrindinė grep komandos sintaksė. Tai prasideda grep, po to pateikiamos kelios parinktys ir paieškos kriterijai, tada baigiama failo pavadinimu.
$ grep [parinktys] PATTERN [FILE…]Ieškokite failų
Norėdami ieškoti failo pavadinimo kataloge, kuriame yra konkreti eilutė, galite naudoti grep tokiu būdu:
$ ls -l | grep -i “stygosPavyzdžiui, norint ieškoti failo pavadinimo, kuriame yra eilutė „testas“, Komanda būtų tokia:
$ ls -l | grep -i testasŠioje komandoje pateikiami visi failai, kuriuose yra eilutė „testas“.
Ieškokite eilutės faile
Norėdami ieškoti eilutės konkrečiame faile, galite naudoti šią komandų sintaksę:
$ string „string“ failo vardasPavyzdžiui, norint ieškoti eilutės „testas“Faile pavadinimu testfile1, mes naudojome šią komandą:
$ grep „darbuotojo“ testfailas1
Pirmiau pateiktas rezultatas grąžino sakinį iš testfile1 kurioje yra eilutė „darbuotojas“.
Ieškokite eilutės keliuose failuose
Norėdami ieškoti eilutės keliuose failuose, galite naudoti šią komandų sintaksę:
$ grep „string“ failo vardas1 failo vardas2Pavyzdžiui, norėdami ieškoti eilutės „darbuotojas“ dviejuose failuose testfile1 ir testfile2, naudojome šią komandą:
$ grep „darbuotojo“ testfile1 testfile2
Pirmiau pateiktoje komandoje bus išvardytos visos eilutės, kuriose yra eilutė „darbuotojas“ iš failų testfile1 ir testfile2.
Taip pat galite naudoti pakaitos simbolį, jei visi failų pavadinimai prasideda tuo pačiu tekstu.
$ grep „string“ failo vardas *Pavyzdžiui, jei paimsime aukščiau pateiktą pavyzdį, kuriame buvo mūsų failų pavadinimai testfile1 ir testfile2 , komanda būtų tokia:
$ grep „darbuotojo“ bandomoji byla *
Ieškokite eilutės faile, nepaisydami eilutės didžiųjų raidžių
Dažniausiai su tuo susidūrėte, kai ieškote kažko naudodami „grep“, bet negaunate išvesties. Taip nutinka dėl neatitikimo ieškant eilutės. Kaip ir mūsų pavyzdyje, jei mes klaidingai naudojameDarbuotojas" vietoj "darbuotojas“, Jis grąžins nulį, nes mūsų faile yra eilutė„darbuotojas“Mažosiomis raidėmis.
Galite pasakyti „grep“, kad ignoruotų paieškos eilutės atvejį, naudodamas -i vėliavą po grep taip:
$ grep -i „string“ failo vardas
Naudodama vėliavą -i, komanda atliks mažųjų ir mažųjų raidžių paiešką ir grąžins visas eilutes, kuriose yra eilutė „darbuotojas“Jame, neatsižvelgiant į raides, yra didžiosios arba mažosios.
Ieškokite naudodami įprastą išraišką
Jei reguliariai naudojama tinkamai, reguliarioji išraiška yra labai efektyvi grep funkcija. Naudodami komandą „Grep“, galite apibrėžti įprastą išraišką su pradiniu ir galiniu raktiniais žodžiais. Tokiu būdu jums nereikės įvesti visos eilutės su komanda grep. Šiam tikslui galima naudoti šią sintaksę.
$ grep “pradinis raktinis žodis.* pabaigosKeyword “failo vardasPavyzdžiui, norėdami ieškoti eilutės faile pavadinimu testfile1, kuris prasideda eilute „this“ ir baigiasi eilute „data“, naudojome šią komandą:
$ grep “tai.* duomenys “testfile1
Tai atspausdins visą eilutę iš testfile1 kuriame yra išraiška (pradinis raktinis žodis „tai“ ir galutinis raktinis žodis „duomenys“).
Atspausdinkite tam tikrą eilučių skaičių po / prieš paieškos eilutę
Taip pat galite rodyti konkretų failo eilučių skaičių prieš / po eilutės atitikties ir pačią suderintą eilutę. Šiam tikslui galima naudoti šią sintaksę:
$ grep -APo eilutės suderinimo nurodytame faile, įskaitant suderintą eilutę, bus rodomas N eilučių skaičius.
Pavyzdžiui, tai yra mūsų pavyzdinis failas, pavadintas testfile2.
Ši komanda išves suderintą eilutę, kurioje yra eilutė „darbuotojas“, Kartu su 2 eilutėmis po jo.
$ grep -A 2 -i „darbuotojo“ testfailas2
Panašiai, jei norite rodyti N eilučių skaičių prieš atitinkančią eilutę konkrečiame faile, naudokite šią sintaksę:
$ grep -BNorėdami rodyti N eilučių aplink eilutę konkrečiame faile, naudokite šią sintaksę:
$ grep -CPaieškos išryškinimas
„Grep“ pagal numatytuosius nustatymus spausdina suderintas eilutes, bet nerodo, kuri eilutės dalis yra suderinta. Jei naudosite parinktį -color su grep, ji parodys, kur jūsų faile rodomos apdirbimo eilutės. „Grep“ pagal numatytuosius nustatymus paryškinimui naudokite raudoną spalvą.
Šiam tikslui galima naudoti šią sintaksę:
$ grep „string“ failo pavadinimas - spalva
Skaičiuojamas rungtynių skaičius
Jei norite suskaičiuoti, kiek kartų konkretus žodis pasirodo konkrečiame faile, galite naudoti parinktį grep with -c. Pateikiamas tik rungtynių skaičius, o ne pats rungtynių skaičius. Šiam tikslui galima naudoti šią sintaksę:
$ grep -c „string“ failo vardasTai yra mūsų failo pavyzdys:
Toliau pateikiamas komandos, kuri grąžino žodžio kartų skaičių, pavyzdys failą pasirodė byloje pavadinimu bandomoji byla3.
Apversta paieška
Kartais norite atlikti atvirkštinę paiešką, kurioje būtų rodomos visos eilutės, išskyrus tas, kurios atitiko įvestį. Norėdami tai padaryti, tiesiog naudokite -v vėliavą ir grep:
$ grep -v „string“ failo vardasPavyzdžiui, norint rodyti visas failo eilutes bandomoji byla3 kuriuose nėra žodžio „sąskaita“, naudojome šią komandą:
$ grep -v „sąskaita“ testfailas3
„Grep“ naudojimas su kitomis komandomis
„Grep“ taip pat gali būti naudojamas norint filtruoti reikiamą rezultatą iš skirtingų komandų išvesties. Pavyzdžiui, išapt -installed list “ komandų išvestį, norite rasti tik automatiškai įdiegtus paketus, galite filtruoti rezultatą naudodami grep taip:
$ apt - įdiegtas sąrašas | grep automatinis
Panašiai lscpu pateikia išsamią informaciją apie procesorių. Jei jus domina tik informacija apie procesoriaus architektūrą, galite ją išfiltruoti naudodami šią komandą:
$ lscpu | grep Architektūra
Šiame straipsnyje mes aprašėme keletą pavyzdžių, kurie padės jums suprasti „grep“ komandas ir jų naudojimą įvairiomis sąlygomis. Stiprus „grep“ įsikibimas gali sutaupyti daug laiko, jei jums reikia peržiūrėti didelius konfigūracijos ar žurnalo failus ir per juos praleisti naudingą informaciją.