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'.