6 parimat CLI-tööriista lihttekstiandmete otsimiseks regulaaravaldiste abil


Selles juhendis tutvutakse parimate käsurea tööriistadega, mida kasutatakse tekstifailides sobivate stringide või mustrite otsimiseks. Neid tööriistu kasutatakse tavaliselt koos regulaaravaldistega - lühendatult kui REGEX -, mis on unikaalsed stringid otsingumustri kirjeldamiseks.

Sukeldumata pikema jututa.

1. Grep käsk

Esiteks on utiliidi grep tööriist - see on globaalse regulaaravaldise printimise akronüüm, on võimas käsurea tööriist, mis on kasulik failist konkreetse stringi või mustri otsimisel.

Grep pakub vaikimisi moodsate Linuxi distributsioonidega laevu ja annab teile paindlikkuse erinevate otsingutulemite tagastamiseks. Grepiga saate teha suure hulga funktsioone, näiteks:

  • Otsige failist stringe või vastavaid mustreid.
  • Otsige stringe või sobivaid mustreid Gzippi failidest.
  • Loendage stringivastete arv.
  • Printige stringi või mustrit sisaldavad reanumbrid.
  • Otsige stringidest rekursiivselt kataloogidest.
  • Tehke pöördotsing (st kuvage otsingukriteeriumidele mittevastavate stringide tulemused).
  • Stringide otsimisel eirake tõstutundlikkust.

Grep-käsu süntaks on üsna lihtne:

$ grep pattern FILE

Näiteks stringi ‘Linux’ otsimiseks failist öelge hello.txt, jättes samal ajal tähelepanuta tõstutundlikkuse, käivitage käsk

$ grep -i Linux hello.txt

Kui soovite saada rohkem võimalusi, mida saate grepiga kasutada, lugege lihtsalt meie artiklit, kus on näited täpsematest grep-käskude näidetest.

2. sed käsk

tekstifailis teksti manipuleerimine. Sed otsib, filtreerib ja asendab antud failis olevaid stringe mitteinteraktiivsel viisil.

Vaikimisi prindib käsk sed väljundi STDOUT-i (Standard Out), mis tähendab, et täitmise tulemus prinditakse terminali, selle asemel, et faili salvestada.

Sed käsk käivitatakse järgmiselt:

$ sed -OPTIONS command [ file to be edited ]

Näiteks kõigi Unixi eksemplaride asendamiseks Linuxiga kutsuge käsk:

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

Kui soovite väljundi terminali printimise asemel ümber suunata, kasutage ümbersuunamismärki (>) , nagu näidatud.

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

Käsu väljund salvestatakse ekraanile printimise asemel faili output.txt.

Kasutatavate võimaluste kontrollimiseks vaadake veel kord man-lehti.

$ man sed

3. Ack käsk

Ack on kiire ja kaasaskantav käsurea tööriist, mis on kirjutatud Perlis. Acki peetakse grepi utiliidi sõbralikuks asendajaks ja tulemuste saavutamine on visuaalselt meeldiv.

Käsk Ack otsib failist või kataloogist ridu, mis sisaldavad otsingukriteeriumide vastet. Seejärel tõstab see ridades kokku sobiva stringi.
Ack suudab faile eristada nende faililaiendite ja teatud määral ka failide sisu põhjal.

Ack käsu süntaks:

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

Näiteks otsingutermini Linux kontrollimiseks käivitage:

$ ack Linux hello.txt

Otsingutööriist on üsna intelligentne ja kui kasutaja ei paku ühtegi faili ega kataloogi, otsib see otsingumustri praegusest kataloogist ja alamkataloogidest.

Allpool toodud näites pole faili ega kataloogi esitatud, kuid ack on automaatselt tuvastanud saadaoleva faili ja otsinud vastavat mustrit.

$ ack Linux

ACK installimiseks oma süsteemi käivitage käsk:

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

4. Awk käsk

Awk on täieõiguslik skriptikeel ning ka tekstitöötluse ja andmetega manipuleerimise tööriist. See otsib faile või programme, mis sisaldavad otsingumustrit. Kui string või muster on leitud, võtab awk mängu vaste või joone abil ja prindib tulemused lehele STDOUT.

AWK muster on suletud lokkis trakside vahele, kogu programm aga ühte jutumärki.

Võtame kõige lihtsama näite. Oletame, et printite oma süsteemi kuupäeva nagu näidatud:

$ date

Oletame, et soovite printida ainult esimese väärtuse, milleks on nädalapäev. Sel juhul sisestage väljund awk-sse, nagu näidatud:

$ date | awk '{print $1}'

Järgmiste väärtuste kuvamiseks eraldage need komaga, nagu näidatud:

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

Ülaltoodud käsk kuvab nädalapäeva ja kuu kuupäeva.

Et saada rohkem võimalusi, mida saate kasutada awk-ga, lugege lihtsalt meie awk-käskude seeriat.

5. Hõbedaotsija

Hõbedaotsija on platvormiülene ja avakoodikoodi otsimise tööriist, mis on sarnane ack-ga, kuid rõhutatakse kiirust. See hõlbustab failidest konkreetse stringi otsimist võimalikult lühikese aja jooksul:

Süntaks:

$ ag OPTIONS search_pattern /path/to/file

Näiteks stringi ‘Linux’ otsimiseks failist hello.txt kutsuge käsk:

$ ag Linux hello.txt

Lisavõimaluste saamiseks külastage käsulehti:

$ man ag

6. Ripgrep

Lõpuks on meil käsurea tööriist ripgrep. Ripgrep on platvormidevaheline utiliit regex-mustrite otsimiseks. See on palju kiirem kui kõik varem mainitud otsingutööriistad ja otsib kataloogidest rekursiivselt vastavaid mustreid. Kiiruse ja jõudluse poolest ei paista Ripgrepiga silma ükski teine tööriist.

Vaikimisi jätab ripgrep binaarfailid/varjatud failid ja kataloogid vahele. Samuti soovitame, et see ei otsiks vaikimisi faile, mida .gitignore/.ignore/.rgignore failid ignoreerivad.

Ripgrep võimaldab teil otsida ka konkreetseid failitüüpe. Näiteks, et piirata oma otsingut Javascripti failide käitamisega

$ rg -Tsj

Ripgrepi kasutamise süntaks on üsna lihtne:

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

Näiteks. Stringi ‘Linux’ eksemplaride otsimiseks failidest, mis asuvad praeguses kataloogis, käivitage käsk:

$ rg Linux

Ripgrepi installimiseks oma süsteemi käivitage järgmised käsud:

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

Lisavõimaluste saamiseks külastage käsulehti:

$ man rg

Need on Linuxis teksti otsimiseks, filtreerimiseks ja manipuleerimiseks kõige enam kasutatavad käsurea tööriistad. Kui teil on muid tööriistu, mille tunnete jätnud kõrvale, andke meile sellest teada kommentaaride jaotises.