6 geriausi CLI įrankiai, skirti ieškoti paprasto teksto duomenų naudojant reguliariąsias išraiškas


Šiame vadove apžvelgiami kai kurie geriausi komandinės eilutės įrankiai, naudojami ieškant atitinkančių eilučių ar šablonų tekstiniuose failuose. Šie įrankiai paprastai naudojami kartu su reguliariosiomis išraiškomis (sutrumpinta kaip REGEX), kurios yra unikalios eilutės, apibūdinančios paieškos šabloną.

Daug daugiau negalvodami pasinerkime.

1. Grep komanda

Visų pirma, grep įrankis – tai Global Regular Expression Print akronimas, yra galingas komandų eilutės įrankis, praverčiantis ieškant konkrečios eilutės ar šablono faile. .

Pagal numatytuosius nustatymus Grep pristatomas su moderniais „Linux“ paskirstymais ir suteikia galimybę lanksčiai pateikti įvairius paieškos rezultatus. Naudodami grep galite atlikti daugybę funkcijų, tokių kaip:

  • Ieškokite eilučių arba atitinkančių šablonų faile.
  • Ieškokite eilučių arba atitinkančių šablonų Gzipped failuose.
  • Suskaičiuokite eilutės atitikmenų skaičių.
  • Išspausdinkite eilučių numerius, kuriuose yra eilutė arba raštas.
  • Rekursyviai ieškokite eilutės kataloguose.
  • Atlikite atvirkštinę paiešką (t. y. parodykite paieškos kriterijų neatitinkančių eilučių rezultatus).
  • Ieškant eilučių, nepaisykite didžiųjų ir mažųjų raidžių jautrumo.

Komandos grep sintaksė yra gana paprasta:

grep pattern FILE

Pavyzdžiui, norėdami ieškoti eilutės „Linux“ faile, tarkime, hello.txt, nepaisydami didžiųjų ir mažųjų raidžių skyrimo, paleiskite komandą:

grep -i Linux hello.txt

Norėdami gauti daugiau parinkčių, kurias galite naudoti su grep, tiesiog perskaitykite mūsų straipsnį, kuriame pateikiami sudėtingesnių grep komandų pavyzdžiai.

2. sed komanda

Sed – Srauto redaktoriaus trumpinys – tai dar vienas naudingas komandų eilutės įrankis, skirtas manipuliuoti tekstu tekstiniame faile. Sed ieško, filtruoja ir pakeičia eilutes tam tikrame faile neinteraktyviu būdu.

Pagal numatytuosius nustatymus komanda sed išspausdina išvestį STDOUT (Standartinis), o tai reiškia, kad vykdymo rezultatas išspausdinamas terminale, o ne išsaugomas faile.

Sed komanda iškviečiama taip:

sed -OPTIONS command [ file to be edited ]

Pavyzdžiui, norėdami pakeisti visus „Unix“ egzempliorius „Linux“, iškvieskite komandą:

sed 's/Unix/Linux' hello.txt

Jei norite nukreipti išvestį, o ne spausdinti ją terminale, naudokite peradresavimo ženklą ( > ), kaip parodyta.

sed 's/Unix/Linux' hello.txt > output.txt

Komandos išvestis išsaugoma output.txt faile, o ne spausdinama ekrane.

Norėdami sužinoti daugiau parinkčių, kurias galite naudoti, dar kartą peržiūrėkite žinyno puslapius.

man sed

3. Ack Command

Ack yra greitas ir nešiojamas komandų eilutės įrankis, parašytas Perl. Ack laikomas patogiu grep priemonės pakaitalu, o rezultatai atrodo patrauklūs.

Komanda Ack faile arba kataloge ieško eilučių, kuriose yra paieškos kriterijų atitiktis. Tada jis paryškina atitinkamą eilutę eilutėse.
Ack gali atskirti failus pagal jų plėtinius ir tam tikru mastu failų turinį.

Ack komandos sintaksė:

ack [options] PATTERN [FILE...]
ack -f [options] [DIRECTORY...]

Pavyzdžiui, norėdami patikrinti paieškos terminą Linux, paleiskite:

ack Linux hello.txt

Paieškos įrankis yra gana protingas ir, jei vartotojas nepateikia jokio failo ar katalogo, jis ieško dabartiniame kataloge ir pakatalogiuose paieškos šablono.

Toliau pateiktame pavyzdyje nepateiktas joks failas ar katalogas, tačiau ack automatiškai aptiko turimą failą ir ieškojo pateikto atitinkančio šablono.

ack Linux

Norėdami įdiegti ack savo sistemoje, paleiskite komandą:

sudo apt install ack-grep    [On Debian/Ubuntu]
sudo dnf install ack-grep    [On CentOS/RHEL]

4. Awk komanda

Awk yra visavertė scenarijų kalba, taip pat teksto apdorojimo ir duomenų tvarkymo įrankis. Jis ieško failų ar programų, kuriose yra paieškos šablonas. Kai randama eilutė arba šablonas, awk imasi veiksmų dėl atitikties arba eilutės ir išspausdina rezultatus STDOUT.

Raštas AWK yra tarp garbanotų skliaustų, o visa programa yra vienose kabutėse.

Paimkime paprasčiausią pavyzdį. Tarkime, kad spausdinate savo sistemos datą, kaip parodyta:

date

Tarkime, kad norite išspausdinti tik pirmąją reikšmę, kuri yra savaitės diena. Tokiu atveju perkelkite išvestį į awk, kaip parodyta:

date | awk '{print $1}'

Norėdami rodyti paskesnes reikšmes, atskirkite jas kableliais, kaip parodyta:

date | awk '{print $1,$2}'

Aukščiau pateikta komanda parodys savaitės dieną ir mėnesio datą.

Norėdami gauti daugiau parinkčių, kurias galite naudoti su awk, tiesiog perskaitykite mūsų awk komandų seriją.

5. Sidabrinis ieškotojas

Sidabrinė paieška yra kelių platformų ir atvirojo kodo paieškos įrankis, panašus į ack, tačiau pabrėžiamas greitis. Tai leidžia lengvai ieškoti konkrečios eilutės failuose per trumpiausią įmanomą laiką:

Sintaksė:

ag OPTIONS search_pattern /path/to/file

Pavyzdžiui, norėdami ieškoti eilutės „Linux“ faile hello.txt, iškvieskite komandą:

ag Linux hello.txt

Norėdami gauti daugiau parinkčių, apsilankykite vadovo puslapiuose:

man ag

6. Ripgrep

Galiausiai turime komandinės eilutės įrankį ripgrep. Ripgrep yra kelių platformų įrankis, skirtas ieškoti reguliariųjų reiškinių šablonų. Tai daug greičiau nei visi anksčiau minėti paieškos įrankiai ir rekursyviai ieško katalogų, kad būtų rasti atitinkantys šablonai. Kalbant apie greitį ir našumą, joks kitas įrankis neišsiskiria už Ripgrep.

Pagal numatytuosius nustatymus ripgrep praleis dvejetainius/paslėptus failus ir katalogus. Be to, atminkite, kad pagal numatytuosius nustatymus jis neieškos failų, kurių nepaiso .gitignore/.ignore/.rgignore failai.

Ripgrep taip pat leidžia ieškoti konkrečių failų tipų. Pavyzdžiui, norėdami apriboti paiešką iki Javascript failų, paleiskite:

rg -Tsj

„Ripgrep“ naudojimo sintaksė yra gana paprasta:

rg [OPTIONS] PATTERN [PATH...]

Pavyzdžiui. Jei norite ieškoti eilutės „Linux“ atvejų failuose, esančiuose dabartiniame kataloge, paleiskite komandą:

rg Linux

Norėdami įdiegti ripgrep savo sistemoje, vykdykite šias komandas:

sudo apt install ripgrep      [On Debian/Ubuntu]
sudo pacman -S ripgrep        [On Arch Linux]
sudo zypper install ripgrep   [On OpenSuse]
sudo dnf install ripgrep      [On CentOS/RHEL/Fedora]

Norėdami gauti daugiau parinkčių, apsilankykite vadovo puslapiuose:

man rg

Tai vieni iš plačiausiai naudojamų komandinės eilutės įrankių, skirtų paieškai, filtravimui ir teksto manipuliavimui Linux sistemoje. Jei turite kitų įrankių, kuriuos, jūsų manymu, praleidome, praneškite mums komentarų skiltyje.