GNU/Linux >> Linux Esercitazione >  >> Linux

10 esempi pratici di regex con grep

Grep o Stampa con espressioni regolari globali viene utilizzato per cercare testo o pattern in un sistema Linux. Può cercare in file, directory e persino output di altri comandi.

Le espressioni regolari sono modelli che possono abbinare il testo in base alle esigenze dell'utente. Queste sono come le regole per la corrispondenza dei modelli.

Grep viene spesso utilizzato insieme alle espressioni regolari per cercare modelli nel testo. Vediamo alcuni esempi pratici di regex con grep.

1. Corrispondenza di una parola indipendentemente dal suo caso

A volte in un testo, la stessa parola può essere scritta in modi diversi. Questo è più comunemente il caso dei nomi propri. Invece di iniziare con una lettera maiuscola, a volte vengono scritte tutte minuscole.

$ grep "[Jj]ayant" 

Entrambe le versioni della parola, indipendentemente dal loro caso, sono state abbinate.

Un altro caso interessante può essere osservato con la parola "IoT". Una parola come questa potrebbe comparire più volte nel testo con diverse varianti. per abbinare tutte le parole indipendentemente dal caso, utilizzare :

$ grep "[iI][oO][tT]"

2. Corrispondenza del numero di cellulare utilizzando regex con grep

Le espressioni regolari possono essere utilizzate per estrarre il numero di cellulare da un testo.

Il formato del numero di cellulare deve essere noto in anticipo. Ad esempio, un'espressione regolare progettata per abbinare i numeri di cellulare non funzionerà per i numeri di telefono di casa.

In questo esempio, il numero di cellulare che è nel seguente formato:91-1234567890 (cioè TwoDigit-TenDigit) sarà abbinato.

$ grep "[[:digit:]]\{2\}[ -]\?[[:digit:]]\{10\}"

Come è evidente, viene abbinato solo il numero di cellulare nel formato sopra indicato.

3. Abbina l'indirizzo email

L'estrazione dell'indirizzo email da un testo è molto utile e può essere ottenuta utilizzando grep.

Un indirizzo email ha un formato particolare. La parte prima di "@" è il nome utente che identifica la casella di posta. Poi c'è un dominio come gmail.com o yahoo.in.

L'espressione regolare può essere progettata tenendo a mente queste cose.

$ grep -E "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}"
  • [A-Za-z0-9._%+-]+ acquisisce il nome utente prima di "@"
  • [A-Za-z0-9.-]+ cattura il nome del dominio senza la parte '.com'
  • .[A-Za-z]{2,6} acquisisce '.com' o '.in' ecc.

4. Controllo URL

Un URL ha un particolare formato di rappresentazione. È possibile creare una regex che verifica se un URL è nella forma corretta o meno.

Un URL deve iniziare con http/https/ftp seguito da "://". Poi c'è il nome di dominio che può terminare con '.com', '.in', '.org' ecc.

$ grep -E "^(http|https|ftp):[\/]{2}([a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4})"

-E utilizzato in questo esempio e nel precedente indica grep esteso che utilizza il set di espressioni regolari estese anziché il set di espressioni regolari di base. Ciò significa che non è necessario eseguire l'escape di alcuni caratteri speciali. Rende meno faticoso il processo di scrittura di una regex complessa. Leggi di più qui.

5. Trovare file con un'estensione particolare

Il comando ls mostra tutti i file nella directory corrente.

l'esecuzione di ls -l fornisce informazioni aggiuntive sui file. Grep può essere usato insieme al comando ls -l per abbinare il pattern nel suo output.

Per prendere i file salvati con l'estensione '.txt' usa:

$ ls -l | grep '.txt$' 

6. Trova i contenuti tra parentesi

Spesso i file di testo hanno contenuti tra parentesi. Possiamo estrarli usando regex con grep.

$ grep "([A-Za-z ]*)"

La regex sceglierà il testo che si trova all'interno della parentesi. È anche possibile specificare la lunghezza del contenuto tra parentesi.

Ad esempio, per abbinare le parentesi con solo 10 caratteri, utilizzare :

$ grep "([A-Za-z ]{10})"

7. Abbina le righe che iniziano con una parola particolare

Possiamo usare regex per trovare le righe che iniziano con una parola particolare.

Per trovare le righe che iniziano con la parola Mele, usa :

grep '^Apples' input.txt 

Allo stesso modo, si possono trovare anche righe che iniziano con qualsiasi altra parola.

Possiamo abbinare le righe che terminano con una parola specifica usando le seguenti espressioni regolari.

$ grep 'apples.$' input.txt

8. Abbinare più parole contemporaneamente

Abbina più parole con regex come mostrato di seguito:

$ grep 'Apples\|Orange' input.txt

Questo comando funziona con una linea OR tra le due parole. Corrisponde alle righe che contengono una delle due parole.

Per fare un AND tra le due parole usa:

$ grep 'Apple' input.txt | grep 'Orange

9. Abbinare la stessa parola in forme diverse

A volte una parola può presentarsi in forme diverse. Possono differire in base al tempo in cui vengono utilizzati.

Peeling e Peeling ne sono un esempio. In entrambe le parole, la radice della parola è "sbucciare"

Possiamo usare regex per abbinare tutte le forme di una parola.

Nel nostro testo abbiamo scritto spellato e spellato rispettivamente come pelato e pelato.

Possiamo anche tradurre dall'inglese americano all'inglese britannico in modo simile. Ad esempio, la parola colore diventa colore.

$ grep 'peal\([a-z]*\)\(\.*[[:space:]]\)' input.txt

10. Trovare utenti nel file /etc/passwd

grep può essere utilizzato per ottenere utenti dal file /etc/passwd/. Il file /etc/passwd mantiene l'elenco degli utenti sul sistema insieme ad alcune informazioni aggiuntive.

$ grep "Adam" /etc/passwd 

Il comando usa grep su un file di sistema. Quando viene trovata la parola "Adam", possiamo vedere la riga come output. Possiamo eseguire la stessa ricerca per qualsiasi altro elemento nel file.

Conclusione

Regex insieme al comando grep può essere molto potente. Regex è studiato come un campo separato nell'informatica e può essere utilizzato per abbinare modelli altamente complessi. Ulteriori informazioni sull'espressione regolare qui.


Linux
  1. Come utilizzare il comando Hexdump di Linux con esempi pratici

  2. Tutorial Awk:Comprendi le variabili Awk con 3 esempi pratici

  3. Gli array AWK spiegati con 5 esempi pratici

  4. Comando Linux rsync con esempi pratici

  5. Comando Eco con esempi pratici

Utilizzo del comando GREP in Linux con esempi

Bash For Loop con esempi pratici

Wait Command in Linux spiegato con esempi pratici

Comando Grep in Linux (con esempi)

Comando Linux lsof spiegato con 12 esempi pratici

15 Esempi pratici di comandi Grep in Linux / UNIX