Awk

Come usare Regex con il comando 'awk'

Come usare Regex con il comando 'awk'

Un'espressione regolare (regex) viene utilizzata per trovare una determinata sequenza di caratteri all'interno di un file. Simboli come lettere, cifre e caratteri speciali possono essere utilizzati per definire il motivo. Varie attività possono essere facilmente completate utilizzando modelli regex. In questo tutorial, ti mostreremo come utilizzare i modelli regex con il comando 'awk'.

I caratteri di base utilizzati nei modelli

Molti caratteri possono essere usati per definire un modello regex. I caratteri più comunemente usati per definire i modelli regex sono definiti di seguito.

Personaggio Descrizione
. Trova qualsiasi carattere senza una nuova riga (\n)
\ Cita un nuovo meta-carattere
^ Abbina l'inizio di una riga
$ Abbina la fine di una riga
| Definisci un'alternativa
() Definire un gruppo
[] Definisci una classe di caratteri
\w Abbina qualsiasi parola
\S Abbina qualsiasi carattere di spazio bianco
\d Abbina qualsiasi cifra
\b Abbina qualsiasi limite di parola

Crea un file

Per seguire questo tutorial, crea un file di testo chiamato prodotti.TXT. Il file dovrebbe contenere quattro campi: ID, Nome, Tipo e Prezzo.

ID Nome Tipo Prezzo

p1001 Monitor 15"Monitor $100

p1002 A4tech Mouse Mouse $10

p1003 Stampante Samsung Stampante $ 50

p1004 Scanner HP Scanner $ 60

p1005 Mouse Logitech Mouse $ 15

Esempio 1: definire un modello regex utilizzando la classe di caratteri

Il seguente comando 'awk' cercherà e stamperà le righe contenenti il ​​carattere 'n' seguito dai caratteri 'er'.

$ prodotti per gatti.TXT
$ awk '/[n][er]/ print $0' prodotti.TXT

Il seguente output verrà prodotto dopo aver eseguito i comandi precedenti. L'output mostra la linea che corrisponde al modello. Qui, solo una linea corrisponde al modello.

Esempio 2: definire un modello regex utilizzando il simbolo '^'

Il seguente comando 'awk' cercherà e stamperà le righe che iniziano con il carattere 'p' e includono il numero 3.

$ prodotti per gatti.TXT
$ awk '/^p.*3/ stampa $ 0' prodotti.TXT

Il seguente output verrà prodotto dopo aver eseguito i comandi precedenti. Ecco, c'è una linea che corrisponde al modello.

Esempio 3: definire un modello regex utilizzando la funzione gsub

Il gsub() la funzione viene utilizzata per cercare e sostituire globalmente il testo. Il seguente comando "awk" cercherà la parola "Scanner" e la sostituirà con la parola "Router" prima di stampare il risultato.

$ prodotti per gatti.TXT
$ awk 'gsub(/Scanner/, "Router")' prodotti.TXT

Il seguente output verrà prodotto dopo aver eseguito i comandi precedenti. C'è una riga che contiene la parola 'Scanner', e 'Scanner'è sostituito dalla parola 'Router'prima che la riga venga stampata.

Esempio 4: definire un modello regex con '*'

Il seguente comando "awk" cercherà e stamperà qualsiasi stringa che inizi con "Mo" e includa qualsiasi carattere successivo.

$ prodotti per gatti.TXT
$ awk '/Mo*/ print $0' prodotti.TXT

Il seguente output verrà prodotto dopo aver eseguito i comandi precedenti. Tre righe corrispondono allo schema: due righe contengono la parola 'Topo' e una riga contiene la parola 'Tenere sotto controllo'.

Esempio 5: definire un modello regex utilizzando il simbolo '$'

Il seguente comando 'awk' cercherà e stamperà le righe nel file che terminano con il numero 5.

$ prodotti per gatti.TXT
$ awk '/5$/ print $0' prodotti.TXT

Il seguente output verrà prodotto dopo aver eseguito i comandi precedenti.  C'è solo una riga nel file che termina con il numero 5.

Esempio 6: definire un modello regex utilizzando '^' e '|' simboli

Il '^Il simbolo ' indica l'inizio di una riga e il simbolo '|Il simbolo ' indica un'istruzione OR logica. Il seguente comando 'awk' cercherà e stamperà le righe che iniziano con il carattere 'p' e contenere uno 'Scanner' o 'Topo'.

$ prodotti per gatti.TXT
$ awk '/^p.* (Scanner|Mouse)/' prodotti.TXT

Il seguente output verrà prodotto dopo aver eseguito i comandi precedenti. L'output mostra che due righe contengono la parola 'Topo' e una riga contiene la parola 'Scanner'. Le tre righe iniziano con il carattere 'p'.

Esempio 7: definire un modello regex utilizzando il simbolo '+'

Il '+' operatore viene utilizzato per trovare almeno una corrispondenza. Il seguente comando 'awk' cercherà e stamperà le righe che contengono il carattere 'n' almeno una volta.

$ prodotti per gatti.TXT
$ awk '/n+/print' prodotti.TXT

Il seguente output verrà prodotto dopo aver eseguito i comandi precedenti. Qui, il carattere 'n' contiene si verifica almeno una volta nelle righe che contengono le parole Monitor, stampante e scanner.

Esempio 8: definire un modello regex utilizzando la funzione gsub()

Il seguente comando 'awk' cercherà globalmente la parola 'Stampante' e sostituiscilo con la parola 'Tenere sotto controllo' usando il gsub() funzione.

$ prodotti per gatti.TXT
$ awk 'gsub(/Printer/, “Monitor”) print$0' prodotti.TXT

Il seguente output verrà prodotto dopo aver eseguito i comandi precedenti. La quarta riga del file contiene la parola 'Stampante' due volte, e nell'output, 'Stampante'è stato sostituito dalla parola 'Tenere sotto controllo'.

Conclusione

Molti simboli e funzioni possono essere utilizzati per definire modelli regex per diverse attività di ricerca e sostituzione. Alcuni simboli comunemente usati nei modelli regex vengono applicati in questo tutorial con il comando 'awk'.

Come installare e giocare a Doom su Linux
Introduzione a Doom La serie Doom è nata negli anni '90 dopo l'uscita dell'originale Doom. È stato un successo immediato e da quel momento in poi la s...
Vulkan per utenti Linux
Con ogni nuova generazione di schede grafiche, vediamo gli sviluppatori di giochi spingere i limiti della fedeltà grafica e avvicinarsi di un passo al...
OpenTTD vs Simutrans
Creare la tua simulazione di trasporto può essere divertente, rilassante ed estremamente allettante. Ecco perché devi assicurarti di provare quanti pi...