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.