GNU/Linux >> Linux Esercitazione >  >> Linux

Grep Regex:una guida completa

Introduzione

Il grep comando (abbreviazione di G lobale R egular E xpressioni P rint) è un potente strumento di elaborazione del testo per la ricerca in file e directory.

Quando grep è combinato con regex (reg ul ex pressioni), la ricerca avanzata e il filtraggio dell'output diventano semplici. Amministratori di sistema, sviluppatori e utenti regolari traggono vantaggio dalla padronanza dell'espressione regolare con grep comando.

Questa guida ti insegna come grep con regex tramite esempi.

Prerequisiti

  • Accesso al terminale/riga di comando.
  • Un file di testo in cui cercare. Gli esempi utilizzano .bashrc file.
  • Utilizzo di base del comando grep.

Espressione regolare Grep

La sintassi per grep comando include espressioni regolari nel seguente formato:

grep [regex] [file]

Le espressioni regolari sono semplici istruzioni che aiutano a filtrare dati e file. Molti comandi Linux, come il comando awk o il comando sed, usano anche espressioni regolari per trovare e manipolare le informazioni.

Due tipi di carattere generali costituiscono un'istruzione regex:

  • Letterali , che sono caratteri di testo standard.
  • Speciale caratteri o metacaratteri hanno un significato speciale a meno che non venga eseguito l'escape con una barra rovesciata (\ ).

Il grep comando offre tre opzioni di sintassi regex:

1. Espressione regolare di base (BRE )

2. Espressioni regolari estese (ERE )

3. Espressioni regolari compatibili con Pearl (PCRE )

Per impostazione predefinita, grep utilizza il BRE sintassi.

Esempio di espressione regolare Grep

Esegui il comando seguente per testare il funzionamento di grep regex:

grep if .bashrc

La regex cerca la stringa di caratteri. Il risultato mostra tutte le istanze in cui la lettera i appare seguito da un f nel .bashrc file. Pertanto, l'output evidenzia i seguenti risultati:

  • se
  • else
  • nonse si
  • identse

Il comando restituisce solo quelle righe in cui è presente una corrispondenza.

Come usare Regex con Grep

Regex offre molte possibilità per perfezionare le ricerche con grep . Di seguito sono riportati alcuni esempi comuni che spiegano la sintassi e la logica di base. Combina le corrispondenze per creare istruzioni regex complesse.

Corrispondenze letterali

Le corrispondenze letterali eseguono una corrispondenza esatta per la stringa di caratteri specificata. L'espressione di esempio precedente per if mostra una corrispondenza letterale.

La ricerca fa distinzione tra maiuscole e minuscole. Il comando seguente restituisce risultati diversi dall'esempio precedente:

grep If .bashrc

Per cercare più parole, aggiungi le virgolette:

grep "if the" .bashrc

L'omissione delle virgolette considera la seconda parola come un file o una posizione.

Fiammiferi di ancoraggio

Le corrispondenze di ancoraggio specificano la posizione della riga nella ricerca. Esistono due tipi di ancoraggio:

  • Il segno di accento circonflesso (^ ) cerca le righe di corrispondenza che iniziano con l'espressione fornita.
  • Il simbolo del dollaro ($ ) cerca le righe di corrispondenza che terminano con il valore letterale fornito.

Ad esempio, per abbinare le righe che iniziano con la parola alias nel .bashrc file, usa:

grep ^alias .bashrc

La ricerca non mostra righe con tabulazioni o spazi prima della parola.

Per abbinare le righe che terminano con la parola then nel .bashrc file, esegui:

grep then$ .bashrc

Usa entrambe le ancore per creare un'istruzione regolare che cerchi una singola parola o istruzione in una riga:

grep ^esac$ .bashrc

Usa solo le ancore per trovare righe vuote in un file. Aggiungi il -n opzione per mostrare i numeri di riga nell'output:

grep -n ^$ .bashrc

Senza il -n opzione, l'output è vuoto.

Abbina qualsiasi personaggio

Il punto (. ) il metacarattere regolare corrisponde a qualsiasi carattere al posto del segno. Ad esempio:

grep r.o .bashrc

L'output mostra tutte le istanze della lettera r , seguito da qualsiasi carattere, seguito da o . Il punto può essere qualsiasi carattere, come una lettera, un numero, un segno o uno spazio.

Aggiungi più punti per indicare più segnaposto di caratteri:

grep r..t .bashrc

Combina con la corrispondenza di ancoraggio per creare un'istruzione regex complessa. Ad esempio:

grep ..t$ .bashrc

L'istruzione trova tutte le righe con due caratteri qualsiasi seguite dalla lettera t alla fine.

Espressioni tra parentesi

Le espressioni tra parentesi consentono la corrispondenza di più caratteri o di un intervallo di caratteri in una posizione. Ad esempio, per abbinare tutte le righe che contengono and o end nel .bashrc file, utilizza il seguente modello:

grep [ae]nd .bashrc

Le espressioni tra parentesi consentono di escludere i caratteri aggiungendo l'accento circonflesso (^ ) cartello. Ad esempio, per abbinare tutto tranne and o end , usa:

grep [^ae]nd .bashrc

Usa le espressioni tra parentesi per specificare un intervallo di caratteri aggiungendo un trattino (- ) tra la prima e l'ultima lettera. Ad esempio, cerca tutte le istanze di lettere maiuscole:

grep [A-Z] .bashrc

Combina le espressioni tra parentesi con la corrispondenza di ancoraggio per trovare tutte le parole che iniziano con lettere maiuscole:

grep ^[A-Z] .bashrc

Le espressioni tra parentesi consentono più intervalli. Ad esempio, abbina tutti i caratteri non alfabetici con:

grep [^a-zA-Z] .bashrc

L'output evidenzia numeri e caratteri, ignorando tutte le lettere.

Classi di personaggi

Grep offre classi di caratteri standard come funzioni predefinite per semplificare le espressioni tra parentesi. Di seguito è riportata una tabella che delinea alcune classi e l'equivalente dell'espressione tra parentesi.

Sintassi Descrizione Equivalente
[[:alnum:]] Tutte le lettere e i numeri. "[0-9a-zA-Z]"
[[:alpha:]] Tutte le lettere. "[a-zA-Z]"
[[:blank:]] Spazi e schede. [CTRL+V<TAB> ]
[[:digit:]] Cifre da 0 a 9. [0-9]
[[:lower:]] Lettere minuscole. [a-z]
[[:punct:]] Punteggiatura e altri caratteri. "[^a-zA-Z0-9]"
[[:upper:]] Lettere maiuscole. [A-Z]
[[:xdigit:]] Cifre esadecimali. "[0-9a-fA-F]"

L'elenco completo delle classi di caratteri grep è nel manuale di grep.

Quantificatori

I quantificatori sono metacaratteri che specificano il numero di aspetti. La tabella seguente mostra la sintassi di ogni quantificatore grep con una breve descrizione.

Sintassi Descrizione
* Zero o più corrispondenze.
? Zero o una corrispondenza.
+ Una o più corrispondenze.
{n} n partite.
{n,} n o più corrispondenze.
{,m} Fino a m partite.
{n,m} Da n fino a m partite.

Il * il segno corrisponde a un modello zero o più volte. Per dimostrare, esegui il seguente comando:

grep m*and .bashrc

In questo caso, il * il segno corrisponde alla lettera m zero o più volte. Pertanto "and , mand , mmand " sono tutte corrispondenze. La lettera m si ripete un numero qualsiasi di volte se seguito dal * firmare.

Per abbinare zero o esattamente una corrispondenza, utilizza il ? cartello. Racchiudere l'affermazione tra virgolette singole ed evitare il carattere per evitare interpretazioni. Ad esempio:

grep 'm\?and' .bashrc

In alternativa, usa le espressioni regolari estese per evitare l'escape:

grep -E 'm?and' .bashrc

L'output evidenzia tutte le istanze di and o mand .

Usa i quantificatori di intervallo per specificare un numero esatto di ripetizioni. Ad esempio, cerca le stringhe con due vocali:

grep '[aeiouAEIOU]\{2\}' .bashrc
grep -E '[aeiouAEIOU]{2}' .bashrc

L'output evidenzia tutte le parole con due vocali.

Alternanza

L'alternanza consente di definire corrispondenze alternative. Racchiudi le stringhe alternative tra virgolette singole e separa ciascuna con un carattere pipe con escape (\| ).

Ad esempio, per cercare le parole bash o alias nel .bashrc file, usa:

grep 'bash\|alias' .bashrc

In alternativa, usa la regex estesa e ometti il ​​carattere di escape:

grep -E 'bash|alias' .bashrc

L'output evidenzia entrambe le istanze di stringa nel file.

Raggruppamento

Le espressioni regolari consentono di raggruppare i modelli in un unico elemento. Metti il ​​gruppo tra parentesi con escape per l'espressione regolare regolare o usa esteso.

Ad esempio, cerca la stringa bashrc e crea il rc caratteri facoltativi:

grep 'bash\(rc\)\?' .bashrc
grep -E 'bash(rc)?' .bashrc

L'output evidenzia tutte le istanze di bashrc . Dal momento che rc è opzionale, il comando corrisponde anche alla parola bash .

Espressioni speciali della barra rovesciata

Il comando grep offre alcune espressioni di backslash uniche per la corrispondenza avanzata dei confini delle parole. Di seguito è riportata una tabella con brevi esempi per ciascun tipo di espressione.

Sintassi Esempio Corrispondenze
(Il testo in grassetto rappresenta le corrispondenze)
\b '\band\b' e
"e "
\e \
e
e
\B '\Band' _e
_e _
se
he si
\< '\ e
"e "
e y
e _
e
e
\> 'and\>' e
"e"
se
_e
e
e
\w '\wand' _e
_e _
mano y
sabbia
\W '\Wand' "e "
/e /
\s '\sand' e
e
\S '\Sand' _e
"e "
sabbia
mano y
_e _
/e /

Ad esempio, usa \b confini per individuare una parola che non fa parte di un'altra parola:

grep '\bse[et]\b' .bashrc

L'espressione individua le parole see e set . Il confine garantisce l'isolamento delle parole.

Metacaratteri in fuga

I metacaratteri di escape trattano i caratteri speciali come letterali. Ad esempio, per cercare un punto (.) alla fine di una riga, esegui l'escape del metacarattere:

grep '\.$' .bashrc

Non consentire l'interpretazione dei caratteri aiuta durante la ricerca nel codice sorgente o nei file di configurazione.


Linux
  1. Cos'è Kubernetes? Guida completa

  2. Come installare Void Linux:una guida passo passo completa

  3. Guida completa per l'utilizzo di AsciiDoc in Linux

  4. La guida completa per principianti a LVM in Linux

  5. Regex (grep) per la ricerca su più righe necessaria

Una guida completa per installare Tomcat su Linux

Ubuntu Firewall UFW – Una guida completa

La guida completa per installare MySQL su Ubuntu

10 esempi pratici di regex con grep

Comandi della directory Linux:una guida completa

Cronjob - La guida completa ai Cronjobs