6 labākie CLI rīki vienkārša teksta datu meklēšanai, izmantojot parastās izteiksmes


Šajā ceļvedī ir apskatīti daži no labākajiem komandrindas rīkiem, kas tiek izmantoti atbilstošu virkņu vai rakstu meklēšanai teksta failos. Šie rīki parasti tiek izmantoti līdzās regulārajām izteiksmēm - saīsinātām kā REGEX -, kas ir unikālas virknes meklēšanas modeļa aprakstīšanai.

Bez ilgākas pārdomām ienirsim.

1. Grep komanda

Pirmkārt, ir grep lietderības rīks - tas ir akronīms Global Regular Expression Print, ir spēcīgs komandrindas rīks, kas noderēs, meklējot failā noteiktu virkni vai rakstu.

Pēc noklusējuma Grep piegādā modernus Linux izplatījumus un ļauj jums atgriezties dažādos meklēšanas rezultātos. Izmantojot grep, jūs varat veikt plašu darbību klāstu, piemēram:

  • Failā meklējiet virknes vai atbilstošus modeļus.
  • Meklējiet virknes vai atbilstošus modeļus Gzip failos.
  • Skaitiet virkņu atbilstību skaitu.
  • Izdrukājiet rindu numurus, kas satur virkni vai rakstu.
  • Rekursīvi meklējiet virkni direktorijos.
  • Veiciet reverso meklēšanu (t.i., parādiet virknes rezultātus, kas neatbilst meklēšanas kritērijiem).
  • Meklējot virknes, ignorējiet reģistrjutību.

Grep komandas sintakse ir diezgan vienkārša:

$ grep pattern FILE

Piemēram, lai meklētu virkni ‘Linux’ failā, teiksim, hello.txt, ignorējot reģistrjutību, palaidiet komandu:

$ grep -i Linux hello.txt

Lai iegūtu vairāk opciju, kuras varat izmantot ar grep, vienkārši izlasiet mūsu rakstu, kurā ir piemēri sarežģītākiem grep komandu piemēriem.

2. sed Komanda

manipulācijas ar tekstu teksta failā. Sed meklē, filtrē un aizstāj virknes dotajā failā neinteraktīvā veidā.

Pēc noklusējuma komanda sed izdrukā izvadi uz STDOUT (Standard Out), kas nozīmē, ka izpildes rezultāts tiek drukāts uz termināļa, nevis tiek saglabāts failā.

Sed komandu izsauc šādi:

$ sed -OPTIONS command [ file to be edited ]

Piemēram, lai aizstātu visus “Unix” gadījumus ar “Linux”, izsauciet komandu:

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

Ja vēlaties novirzīt izvadi, nevis drukāt to terminālā, izmantojiet novirzīšanas zīmi (>) , kā parādīts.

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

Komandas izeja tiek saglabāta failā output.txt, nevis tiek drukāta uz ekrāna.

Lai pārbaudītu citas izmantojamās iespējas, vēlreiz pārbaudiet rokasgrāmatas.

$ man sed

3. Ack komanda

Ack ir ātrs un pārnēsājams komandrindas rīks, kas rakstīts Perl valodā. Ack tiek uzskatīts par draudzīgu grep lietderības aizstājēju, un rezultāts ir vizuāli pievilcīgs.

Ack komanda failā vai direktorijā meklē rindas, kurās ir meklēšanas kritēriju atbilstība. Pēc tam tas izceļ atbilstošo virkni rindās.
Ack spēj atšķirt failus, pamatojoties uz to failu paplašinājumiem un zināmā mērā failu saturu.

Ack komandu sintakse:

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

Piemēram, lai pārbaudītu meklēšanas vienumu Linux, palaidiet:

$ ack Linux hello.txt

Meklēšanas rīks ir diezgan saprātīgs, un, ja lietotājs nenodrošina failu vai direktoriju, tas meklēšanas modeli meklē pašreizējā direktorijā un apakšdirektorijās.

Tālāk sniegtajā piemērā nav norādīts neviens fails vai direktorijs, bet ack automātiski noteica pieejamo failu un meklēja atbilstošo paraugu.

$ ack Linux

Lai sistēmā instalētu ack, palaidiet komandu:

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

4. Awk komanda

Awk ir pilnvērtīga skriptu valoda, kā arī teksta apstrādes un datu manipulācijas rīks. Tas meklē failus vai programmas, kas satur meklēšanas modeli. Kad tiek atrasta virkne vai raksts, awk rīkojas ar spēli vai līniju un izdrukā rezultātus vietnē STDOUT.

AWK modelis ir ievietots starp cirtainajām lencēm, bet visa programma ir ievietota atsevišķās pēdiņās.

Ņemsim vienkāršāko piemēru. Pieņemsim, ka jūs drukājat savas sistēmas datumu, kā parādīts:

$ date

Pieņemsim, ka vēlaties izdrukāt tikai pirmo vērtību, kas ir nedēļas diena. Šajā gadījumā ievadiet izvadi awk, kā parādīts:

$ date | awk '{print $1}'

Lai parādītu nākamās vērtības, atdaliet tās, izmantojot komatu, kā parādīts:

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

Iepriekš norādītajā komandā tiks parādīta nedēļas diena un mēneša datums.

Lai iegūtu vairāk opciju, kuras varat izmantot ar awk, vienkārši izlasiet mūsu awk komandu sēriju.

5. Sudraba meklētājs

Sudraba meklētājs ir starpplatformu un atvērtā koda meklēšanas rīks, kas līdzīgs ack, taču uzsvars tiek likts uz ātrumu. Tas ļauj viegli meklēt noteiktu virkni failos pēc iespējas īsākā laikā:

Sintakse:

$ ag OPTIONS search_pattern /path/to/file

Piemēram, lai meklētu virkni ‘Linux’ failā hello.txt, izsauciet komandu:

$ ag Linux hello.txt

Lai iegūtu papildu iespējas, apmeklējiet rokasgrāmatas lapas:

$ man ag

6. Ripgreps

Visbeidzot, mums ir komandrindas rīks ripgrep. Ripgrep ir starpplatformu utilīta regex modeļu meklēšanai. Tas ir daudz ātrāk nekā visi iepriekš minētie meklēšanas rīki, un rekursīvi meklē direktorijos atbilstošos modeļus. Ātruma un veiktspējas ziņā neviens cits rīks neizceļas ar Ripgrep.

Pēc noklusējuma ripgrep izlaidīs bināros failus/slēptos failus un direktorijus. Turklāt ņemiet vērā, ka pēc noklusējuma tas nemeklēs failus, kurus ignorē .gitignore/.ignore/.rgignore faili.

Ripgrep ļauj arī meklēt noteiktus failu tipus. Piemēram, lai ierobežotu meklēšanu, palaižot tikai Javascript failus:

$ rg -Tsj

Ripgrep izmantošanas sintakse ir diezgan vienkārša:

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

Piemēram. Lai meklētu virknes ‘Linux’ gadījumus failos, kas atrodas pašreizējā direktorijā, palaidiet komandu:

$ rg Linux

Lai sistēmā instalētu ripgrep, izpildiet šādas 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]

Lai iegūtu papildu iespējas, apmeklējiet rokasgrāmatas lapas:

$ man rg

Šie ir daži no visbiežāk izmantotajiem komandrindas rīkiem, lai meklētu, filtrētu un manipulētu ar tekstu Linux. Ja jums ir citi rīki, kurus, jūsuprāt, esam izlaiduši, dariet mums to zināmu komentāru sadaļā.