6 millors eines CLI per cercar dades de text sense format mitjançant expressions regulars


Aquesta guia fa un recorregut per algunes de les millors eines de línia d'ordres que s'utilitzen per cercar cadenes o patrons coincidents en fitxers de text. Aquestes eines s'utilitzen normalment al costat d'expressions regulars, escurçades com a REGEX, que són cadenes úniques per descriure un patró de cerca.

Sense massa preàmbuls, endinsem-nos.

1. Comandament Grep

En primer lloc hi ha l'eina d'utilitat grep: és l'acrònim de Global Regular Expression Print, és una potent eina de línia d'ordres que és útil quan es cerca una cadena o un patró específics en un fitxer.

Grep s'envia amb distribucions de Linux modernes de manera predeterminada i us ofereix la flexibilitat de tornar diversos resultats de cerca. Amb grep, podeu realitzar una àmplia gamma de funcions com ara:

  • Cerca cadenes o patrons coincidents en un fitxer.
  • Cerqueu cadenes o patrons coincidents als fitxers comprimits amb Gzip.
  • Compteu el nombre de coincidències de cadena.
  • Imprimeix els números de línia que contenen la cadena o el patró.
  • Cerqueu recursivament la cadena als directoris.
  • Feu una cerca inversa (és a dir, mostra els resultats de les cadenes que no coincideixen amb els criteris de cerca).
  • Ignoreu la distinció entre majúscules i minúscules quan cerqueu cadenes.

La sintaxi per utilitzar l'ordre grep és bastant senzilla:

$ grep pattern FILE

Per exemple, per cercar la cadena Linux en un fitxer, per exemple, hello.txt sense tenir en compte la distinció entre majúscules i minúscules, executeu l'ordre:

$ grep -i Linux hello.txt

Per obtenir més opcions que podeu utilitzar amb grep, simplement llegiu el nostre article que mostra exemples d'ordres grep més avançats.

2. Comandament sed

manipulació de text en un fitxer de text. Sed cerca, filtra i substitueix cadenes en un fitxer determinat de manera no interactiva.

Per defecte, l'ordre sed imprimeix la sortida a STDOUT (Standard Out), cosa que implica que el resultat de l'execució s'imprimeix al terminal en lloc de desar-se en un fitxer.

L'ordre Sed s'invoca de la següent manera:

$ sed -OPTIONS command [ file to be edited ]

Per exemple, per substituir totes les instàncies d'Unix per Linux, invoqueu l'ordre:

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

Si voleu redirigir la sortida en lloc d'imprimir-la al terminal, utilitzeu el signe de redirecció ( > ) tal com es mostra.

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

La sortida de l'ordre es desa al fitxer output.txt en lloc d'imprimir-se a la pantalla.

Per comprovar més opcions que es poden utilitzar, torneu a consultar les pàgines de manual.

$ man sed

3. Comandament de confirmació

Ack és una eina de línia d'ordres ràpida i portàtil escrita en Perl. Ack es considera un reemplaçament amigable per a la utilitat grep i els resultats es mostren d'una manera visualment atractiva.

L'ordre Ack cerca al fitxer o al directori les línies que contenen la coincidència amb els criteris de cerca. A continuació, ressalta la cadena coincident a les línies.
Ack té la capacitat de distingir fitxers segons les seves extensions de fitxer i, fins a cert punt, el contingut dels fitxers.

Sintaxi de l'ordre Ack:

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

Per exemple, per comprovar el terme de cerca Linux, executeu:

$ ack Linux hello.txt

L'eina de cerca és bastant intel·ligent i si l'usuari no proporciona cap fitxer o directori, cerca el patró de cerca al directori i subdirectoris actuals.

A l'exemple següent, no s'ha proporcionat cap fitxer ni directori, però ack ha detectat automàticament el fitxer disponible i ha cercat el patró corresponent proporcionat.

$ ack Linux

Per instal·lar ack al vostre sistema, executeu l'ordre:

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

4. Comandament Awk

Awk és un llenguatge de script complet i també una eina de processament de text i manipulació de dades. Cerca fitxers o programes que contenen el patró de cerca. Quan es troba la cadena o el patró, awk actua sobre la coincidència o la línia i imprimeix els resultats a STDOUT.

El patró AWK està tancat entre claus mentre que tot el programa està tancat entre cometes simples.

Prenguem l'exemple més senzill. Suposem que esteu imprimint la data del vostre sistema tal com es mostra:

$ date

Suposem que només voleu imprimir el primer valor, que és el dia de la setmana. En aquest cas, conduïu la sortida a awk tal com es mostra:

$ date | awk '{print $1}'

Per mostrar els valors següents, separeu-los amb una coma tal com es mostra:

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

L'ordre anterior mostrarà el dia de la setmana i la data del mes.

Per obtenir més opcions que podeu utilitzar amb awk, simplement llegiu la nostra sèrie d'ordres awk.

5. Cercador de plata

El cercador de plata és una eina de cerca de codi obert i multiplataforma similar a ack però amb èmfasi en la velocitat. Us facilita la cerca d'una cadena específica dins dels fitxers en el menor temps possible:

Sintaxi:

$ ag OPTIONS search_pattern /path/to/file

Per exemple, per cercar la cadena Linux en un fitxer hello.txt, invoqueu l'ordre:

$ ag Linux hello.txt

Per obtenir opcions addicionals, visiteu les pàgines de manual:

$ man ag

6. Ripgrep

Finalment, tenim l'eina de línia d'ordres ripgrep. Ripgrep és una utilitat multiplataforma per cercar patrons d'expressió regular. És molt més ràpid que totes les eines de cerca esmentades anteriorment i cerca recursivament als directoris per trobar patrons coincidents. En termes de velocitat i rendiment, cap altra eina destaca que Ripgrep.

Per defecte, ripgrep saltarà els fitxers binaris/fitxers i directoris ocults. A més, tingueu en compte que, per defecte, no cercarà fitxers ignorats pels fitxers .gitignore/.ignore/.rgignore.

Ripgrep també us permet cercar tipus de fitxers específics. Per exemple, per limitar la cerca als fitxers Javascript, executeu:

$ rg -Tsj

La sintaxi per utilitzar ripgrep és bastant fàcil:

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

Per exemple. Per cercar exemples de la cadena Linux als fitxers situats dins del directori actual, executeu l'ordre:

$ rg Linux

Per instal·lar ripgrep al vostre sistema, executeu les ordres següents:

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

Per obtenir opcions addicionals, visiteu les pàgines de manual:

$ man rg

Aquestes són algunes de les eines de línia d'ordres més utilitzades per cercar, filtrar i manipular text a Linux. Si teniu altres eines que creieu que hem deixat de banda, feu-nos-ho saber a la secció de comentaris.