6 najboljših orodij CLI za iskanje navadnih besedil z uporabo regularnih izrazov


Ta vodnik vam bo ogledal nekaj najboljših orodij ukazne vrstice, ki se uporabljajo za iskanje ustreznih nizov ali vzorcev v besedilnih datotekah. Ta orodja se običajno uporabljajo skupaj z regularnimi izrazi - skrajšanimi kot REGEX -, ki so edinstveni nizi za opis vzorca iskanja.

Brez posebnega odlašanja se potopimo.

1. Ukaz Grep

Na prvem mestu je orodje grep - je kratica za Global Regular Expression Print, je močno orodje ukazne vrstice, ki je priročno pri iskanju določenega niza ali vzorca v datoteki.

Grep je privzeto opremljen s sodobnimi distribucijami Linuxa in vam omogoča prilagodljivost pri vrnitvi različnih rezultatov iskanja. Z grepom lahko izvajate široko paleto funkcij, kot so:

  • V datoteki poiščite nize ali ustrezne vzorce.
  • V gzipiranih datotekah poiščite nize ali ujemajoče se vzorce.
  • Preštejte število ujemanj nizov.
  • Natisnite številke vrstic, ki vsebujejo niz ali vzorec.
  • Iščite rekurzivno niz v imenikih.
  • Izvedite obratno iskanje (tj. Prikaži rezultate nizov, ki se ne ujemajo z iskalnimi merili).
  • Pri iskanju nizov prezri občutljivost na male in male črke.

Sintaksa za uporabo ukaza grep je precej preprosta:

$ grep pattern FILE

Če želite na primer poiskati niz »Linux« v datoteki, recimo hello.txt, pri tem pa prezrite občutljivost na male in male črke, zaženite ukaz:

$ grep -i Linux hello.txt

Če želite dobiti več možnosti, ki jih lahko uporabite z grep, preprosto preberite naš članek s primeri naprednejših primerov ukazov grep.

2. sed Command

manipulacijsko besedilo v besedilni datoteki. Sed išče, filtrira in nadomešča nize v dani datoteki na neinteraktiven način.

Ukaz sed privzeto natisne izhod v STDOUT (Standard Out), kar pomeni, da se rezultat izvedbe natisne na terminalu, namesto da se shrani v datoteko.

Ukaz Sed se prikliče na naslednji način:

$ sed -OPTIONS command [ file to be edited ]

Če želite na primer zamenjati vse primere "Unix" z "Linux", pokličite ukaz:

$ sed 's/Unix/Linux' hello.txt

Če želite preusmeriti izhod, namesto da bi ga natisnili na terminalu, uporabite znak za preusmeritev (>) , kot je prikazano.

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

Izhod ukaza se shrani v datoteko output.txt, namesto da bi se natisnil na zaslon.

Če želite preveriti več možnosti, ki jih lahko uporabite, še enkrat preverite strani z navodili.

$ man sed

3. Ukaz Ack

Ack je hitro in prenosno orodje ukazne vrstice, napisano v Perlu. Ack velja za prijazno nadomestitev pripomočka grep, rezultati pa so vizualno privlačni.

Ukaz Ack išče v datoteki ali imeniku vrstice, ki vsebujejo ujemanje iskalnih kriterijev. Nato v vrsticah poudari ustrezni niz.
Ack je sposoben ločevati datoteke glede na njihove končnice datotek in v določeni meri glede na vsebino datotek.

Sintaksa ukaza Ack:

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

Če želite na primer poiskati iskalni izraz Linux, zaženite:

$ ack Linux hello.txt

Iskalno orodje je precej inteligentno in če uporabnik ne predloži nobene datoteke ali imenika, poišče vzorec iskanja v trenutnem imeniku in podimenikih.

V spodnjem primeru ni bila predložena nobena datoteka ali imenik, vendar je ack samodejno zaznal razpoložljivo datoteko in poiskal ustrezni vzorec.

$ ack Linux

Če želite namestiti ack v sistem, zaženite ukaz:

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

4. Ukaz Awk

Awk je polnopravni skriptni jezik in tudi orodje za obdelavo besedila in obdelavo podatkov. Išče datoteke ali programe, ki vsebujejo vzorec iskanja. Ko najdemo niz ali vzorec, awk ukrepa na tekmi ali vrstici in rezultate natisne na STDOUT.

Vzorec AWK je zaprt med zavitimi oklepaji, medtem ko je celoten program v enojnih narekovajih.

Vzemimo najpreprostejši primer. Predpostavimo, da tiskate datum sistema, kot je prikazano:

$ date

Recimo, da želite natisniti samo prvo vrednost, to je dan v tednu. V tem primeru usmerite izhod v awk, kot je prikazano:

$ date | awk '{print $1}'

Če želite prikazati naslednje vrednosti, jih ločite z vejico, kot je prikazano:

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

Zgornji ukaz bo prikazal dan v tednu in datum meseca.

Če želite dobiti več možnosti, ki jih lahko uporabite z awk, preprosto preberite našo serijo ukazov awk.

5. Srebrni iskalec

Iskalnik srebra je orodje za iskanje kode z več platformami in odprtokodno kodo, podobno kot ack, vendar s poudarkom na hitrosti. Olajša iskanje določenega niza v datotekah v najkrajšem možnem času:

Sintaksa:

$ ag OPTIONS search_pattern /path/to/file

Če želite na primer poiskati niz ‘Linux’ v datoteki hello.txt, pokličite ukaz:

$ ag Linux hello.txt

Za dodatne možnosti obiščite strani z navodili:

$ man ag

6. Ripgrep

Na koncu imamo še orodje za ukazno vrstico ripgrep. Ripgrep je pripomoček za več platform za iskanje vzorcev regularnih izrazov. Je veliko hitrejši od vseh prej omenjenih iskalnih orodij in rekurzivno išče po imenikih za ujemajoče se vzorce. Glede hitrosti in zmogljivosti nobeno drugo orodje ne izstopa kot Ripgrep.

Privzeto ripgrep preskoči binarne datoteke/skrite datoteke in imenike. Upoštevajte tudi, da privzeto ne bo iskal datotek, ki jih datoteke .gitignore/.ignore/.rgignore prezrejo.

Ripgrep vam omogoča tudi iskanje določenih vrst datotek. Če želite na primer omejiti iskanje na zagon datotek Javascript:

$ rg -Tsj

Sintaksa za uporabo ripgrepa je dokaj enostavna:

$ rg [OPTIONS] PATTERN [PATH...]

Na primer. Za iskanje primerkov niza 'Linux' v datotekah, ki se nahajajo v trenutnem imeniku, zaženite ukaz:

$ rg Linux

Če želite namestiti ripgrep v sistem, zaženite naslednje ukaze:

$ 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]

Za dodatne možnosti obiščite strani z navodili:

$ man rg

To je nekaj najpogosteje uporabljenih orodij ukazne vrstice za iskanje, filtriranje in obdelavo besedila v Linuxu. Če imate druga orodja, za katera menite, da smo jih izpustili, nam to sporočite v oddelku za komentarje.