Ricerca nel sito web

6 migliori strumenti CLI per cercare dati in testo semplice utilizzando le espressioni regolari


Questa guida illustra alcuni dei migliori strumenti da riga di comando utilizzati per la ricerca di stringhe o modelli corrispondenti nei file di testo. Questi strumenti vengono solitamente utilizzati insieme alle espressioni regolari, abbreviate come REGEX, che sono stringhe univoche per descrivere un modello di ricerca.

Senza ulteriori indugi, tuffiamoci.

1. Comando Grep

Al primo posto c'è lo strumento di utilità grep: è l'acronimo di Global Regular Expression Print, è un potente strumento da riga di comando che risulta utile quando si cerca una stringa specifica o un modello in un file .

Grep viene fornito con le moderne distribuzioni Linux per impostazione predefinita e ti offre la flessibilità di restituire vari risultati di ricerca. Con grep puoi eseguire una vasta gamma di operazioni come:

  • Cerca stringhe o modelli corrispondenti in un file.
  • Cerca stringhe o modelli corrispondenti nei file compressi con Gzip.
  • Contare il numero di corrispondenze di stringhe.
  • Stampa i numeri di riga che contengono la stringa o il modello.
  • Cerca ricorsivamente la stringa nelle directory.
  • Eseguire una ricerca inversa (ovvero visualizzare i risultati delle stringhe che non corrispondono ai criteri di ricerca).
  • Ignora la distinzione tra maiuscole e minuscole durante la ricerca di stringhe.

La sintassi per utilizzare il comando grep è abbastanza semplice:

grep pattern FILE

Ad esempio, per cercare la stringa "Linux" in un file, pronuncia ciao.txt ignorando la distinzione tra maiuscole e minuscole, esegui il comando:

grep -i Linux hello.txt

Per ottenere più opzioni da utilizzare con grep, leggi semplicemente il nostro articolo che contiene esempi di comandi grep più avanzati.

2. Comando sed

Sed, abbreviazione di Stream Editor, è un altro utile strumento da riga di comando per manipolare il testo in un file di testo. Sed cerca, filtra e sostituisce le stringhe in un determinato file in modo non interattivo.

Per impostazione predefinita, il comando sed stampa l'output su STDOUT (Standard Out), il che implica che il risultato dell'esecuzione viene stampato sul terminale anziché essere salvato in un file.

Il comando Sed viene invocato come segue:

sed -OPTIONS command [ file to be edited ]

Ad esempio, per sostituire tutte le istanze di "Unix" con "Linux", invoca il comando:

sed 's/Unix/Linux' hello.txt

Se vuoi reindirizzare l'output invece di stamparlo sul terminale, usa il segno di reindirizzamento ( > ) come mostrato.

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

L'output del comando viene salvato nel file output.txt invece di essere stampato sullo schermo.

Per verificare più opzioni che possono essere utilizzate, controlla ancora una volta le pagine man.

man sed

3. Conferma comando

Ack è uno strumento da riga di comando veloce e portatile scritto in Perl. Ack è considerato un sostituto amichevole dell'utilità grep e restituisce i risultati in modo visivamente accattivante.

Il comando Ack cerca nel file o nella directory le righe che contengono la corrispondenza per i criteri di ricerca. Quindi evidenzia la stringa corrispondente nelle righe.
Ack ha la capacità di distinguere i file in base alle loro estensioni e, in una certa misura, al contenuto dei file.

Sintassi del comando Ack:

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

Ad esempio, per verificare il termine di ricerca Linux, esegui:

ack Linux hello.txt

Lo strumento di ricerca è abbastanza intelligente e se l'utente non fornisce alcun file o directory, cerca il modello di ricerca nella directory corrente e nelle sottodirectory.

Nell'esempio seguente non è stato fornito alcun file o directory, ma ack ha rilevato automaticamente il file disponibile e ha cercato il modello corrispondente fornito.

ack Linux

Per installare ack sul tuo sistema esegui il comando:

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

4. Comando Awk

Awk è un linguaggio di scripting completo e anche uno strumento di elaborazione di testi e manipolazione di dati. Cerca file o programmi che contengono il modello di ricerca. Quando viene trovata la stringa o il modello, awk agisce sulla corrispondenza o sulla riga e stampa i risultati su STDOUT.

Il modello AWK è racchiuso tra parentesi graffe mentre l'intero programma è racchiuso tra virgolette singole.

Prendiamo l’esempio più semplice. Supponiamo che tu stia stampando la data del tuo sistema come mostrato:

date

Supponiamo di voler stampare solo il primo valore, ovvero il giorno della settimana. In tal caso, collega l'output a awk come mostrato:

date | awk '{print $1}'

Per visualizzare i valori successivi, separarli utilizzando una virgola come mostrato:

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

Il comando sopra mostrerà il giorno della settimana e la data del mese.

Per ottenere più opzioni da utilizzare con awk, leggi semplicemente la nostra serie di comandi awk.

5. Cercatore d'argento

Silver Searcher è uno strumento di ricerca di codice multipiattaforma e open source simile a ack ma con un'enfasi sulla velocità. Ti semplifica la ricerca di una stringa specifica all'interno dei file nel più breve tempo possibile:

Sintassi:

ag OPTIONS search_pattern /path/to/file

Ad esempio, per cercare la stringa "Linux" in un file ciao.txt invoca il comando:

ag Linux hello.txt

Per ulteriori opzioni, visitare le pagine man:

man ag

6. Ripgrep

Infine, abbiamo lo strumento da riga di comando ripgrep. Ripgrep è un'utilità multipiattaforma per la ricerca di modelli regex. È molto più veloce di tutti gli strumenti di ricerca menzionati in precedenza e ricerca ricorsivamente i modelli corrispondenti nelle directory. In termini di velocità e prestazioni, nessun altro strumento si distingue come Ripgrep.

Per impostazione predefinita, ripgrep salterà i file binari/file e le directory nascosti. Inoltre, tieni presente che per impostazione predefinita non cercherà i file ignorati dai file .gitignore/.ignore/.rgignore.

Ripgrep ti consente anche di cercare tipi di file specifici. Ad esempio, per limitare la ricerca ai file Javascript esegui:

rg -Tsj

La sintassi per usare ripgrep è abbastanza semplice:

rg [OPTIONS] PATTERN [PATH...]

Per esempio. Per cercare istanze della stringa 'Linux' nei file situati nella directory corrente, esegui il comando:

rg Linux

Per installare ripgrep sul tuo sistema esegui i seguenti comandi:

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 ulteriori opzioni, visitare le pagine man:

man rg

Questi sono alcuni degli strumenti da riga di comando più utilizzati per cercare, filtrare e manipolare il testo in Linux. Se disponi di altri strumenti che ritieni siano stati esclusi, faccelo sapere nella sezione commenti.