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 modello. Varie attività possono essere facilmente completate utilizzando i modelli di regex. In questo tutorial, ti mostreremo come utilizzare i modelli regex con il comando 'awk'.

I caratteri di base usati nei motivi

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

Carattere Descrizione
. Abbinare qualsiasi personaggio senza una nuova linea (\ n)
\ Cita un nuovo meta-carattere
^ Abbina l'inizio di una linea
$ Abbinare la fine di una linea
| Definire un alternativo
() Definire un gruppo
[ Definisci una classe di personaggi
\ w Abbinare qualsiasi parola
\S Abbina qualsiasi carattere spaziale bianco
\D Abbinare qualsiasi cifra
\B Abbina qualsiasi limite di parole

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.

Prezzo del tipo di nome ID

P1001 15 "Monitor Monitor $ 100

P1002 A4Tech Mouse Mouse $ 10

stampante P1003 Samsung stampante $ 50

Scanner scanner P1004 HP $ 60

P1005 Logitech Mouse Mouse $ 15

Esempio 1: definire un modello di regex usando la classe dei caratteri

Il seguente comando "awk" cercherà e stamperanno righe contenenti il ​​personaggio "N" seguito dai caratteri "er".

Prodotti da $ Cat.TXT
$ awk '/ [n] [er]/ stampa $ 0'.TXT

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

Esempio 2: Definire un modello di regex usando il simbolo '^'

Il seguente comando "awk" cercherà e stampano righe che iniziano con il carattere "P" e includono il numero 3.

Prodotti da $ Cat.TXT
$ awk '/^p.*3/ stampa $ 0 'prodotti.TXT

Il seguente output verrà prodotto dopo aver eseguito i comandi sopra. Qui, c'è una riga che corrisponde al modello.

Esempio 3: definire un modello di regex usando la funzione GSUB

IL gsub () La funzione viene utilizzata per cercare e sostituire il testo a livello globale. Il seguente comando "awk" cercherà la parola "scanner" e lo sostituirà con la parola "router" prima di stampare il risultato.

Prodotti da $ Cat.TXT
$ awk 'gsub (/scanner/, "router")'.TXT

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

Esempio 4: Definire un modello di regex con '*'

Il seguente comando "awk" cercherà e stamperà qualsiasi stringa che inizia con "mo" e include qualsiasi carattere successivo.

Prodotti da $ Cat.TXT
$ awk '/ mo*/ stampa $ 0' prodotti.TXT

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

Esempio 5: Definire un modello di regex usando il simbolo "$"

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

Prodotti da $ Cat.TXT
$ awk '/ 5 $/ stampa $ 0'.TXT

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

Esempio 6: Definire un modello di regex usando il '^' e '|' simboli

IL '^'Il simbolo indica l'inizio di una linea e il'|'Il simbolo indica un'istruzione logica o. Il seguente comando "awk" cercherà e stamperanno righe che iniziano con il carattere "P'e contengono entrambi'Scanner' O 'Topo'.

Prodotti da $ Cat.TXT
$ awk '/^p.* (Scanner | mouse)/'prodotti.TXT

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

Esempio 7: Definire un modello di regex usando il simbolo "+"

IL '+'L'operatore viene utilizzato per trovare almeno una partita. Il seguente comando "awk" cercherà e stamperanno righe che contengono il carattere "N' almeno una volta.

Prodotti da $ Cat.TXT
$ awk '/n+/print'.TXT

Il seguente output verrà prodotto dopo aver eseguito i comandi sopra. Qui, il personaggio 'N'contiene si verifica almeno una volta nelle righe che contengono le parole Monitorare, stampante e scanner.

Esempio 8: Definire un modello di regex usando la funzione GSUB ()

Il seguente comando "awk" cercherà a livello globale la parola "Stampante'e sostituirlo con la parola'Tenere sotto controllo' usando il funzione gsub ().

Prodotti da $ Cat.TXT
$ awk 'gsub (/stampante/, "monitor") stampa $ 0' prodotti.TXT

Il seguente output verrà prodotto dopo aver eseguito i comandi sopra. 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 i modelli di regex per la ricerca e la sostituzione di attività diverse. Alcuni simboli comunemente usati nei modelli di regex sono applicati in questo tutorial con il comando 'awk'.