GNU/Linux >> Linux Esercitazione >  >> Linux

Introduzione alle espressioni regolari

Tutti abbiamo utilizzato il globbing di file con caratteri jolly come * e ? come mezzo per selezionare file o righe di dati specifici da un flusso di dati. Questi strumenti sono potenti e li uso molte volte al giorno. Tuttavia, ci sono cose che non si possono fare con i caratteri jolly.

Le espressioni regolari (regex o RE) ci forniscono pattern più complessi e flessibili

capacità di corrispondenza. Proprio come alcuni caratteri assumono un significato speciale quando si utilizza il globbing di file, anche le RE hanno caratteri speciali. Esistono due tipi principali di espressioni regolari (RE), le espressioni regolari di base (BRE) e le espressioni regolari estese (ERE).

La prima cosa di cui abbiamo bisogno sono alcune definizioni. Esistono molte definizioni per il termine espressioni regolari , ma molti sono aridi e privi di informazioni. Ecco i miei.

Le espressioni regolari sono stringhe di letterali e metacaratteri che possono essere utilizzati come modelli da varie utilità Linux per abbinare stringhe di dati di testo normale ASCII in un flusso di dati. Quando si verifica una corrispondenza, può essere utilizzata per estrarre o eliminare una riga di dati dal flusso o per modificare in qualche modo la stringa corrispondente.

Le espressioni regolari di base (BRE) e le espressioni regolari estese (ERE) non sono significativamente diverse in termini di funzionalità. (Vedi la sezione 3.6 della pagina delle informazioni di grep, «Espressioni regolari di base rispetto a quelle estese».) La differenza principale risiede nella sintassi utilizzata e nel modo in cui vengono specificati i metacaratteri. Nelle espressioni regolari di base, i metacaratteri ? , + , { , | , ( e ) perdono il loro significato speciale. Invece, è necessario utilizzare le versioni con barra rovesciata:\? , \+ , \{ , \| , \( e \) . Molti ritengono che la sintassi ERE sia più facile da usare.

Nota: Quando parlo di espressioni regolari, in senso generale intendo di solito includere espressioni regolari sia di base che estese. Se c'è una differenziazione da fare userò gli acronimi BRE per le espressioni regolari di base o ERE per le espressioni regolari estese.

Le espressioni regolari (RE) portano il concetto di utilizzare i metacaratteri per abbinare i modelli nei flussi di dati molto più lontano del globbing di file e ci danno ancora più controllo sugli elementi che selezioniamo da un flusso di dati. Le RE vengono utilizzate da vari strumenti per l'analisi un flusso di dati per abbinare i modelli di caratteri al fine di eseguire alcune trasformazioni sui dati.

Nota: Un significato generale di analisi è esaminare qualcosa studiando le sue parti componenti. Per i nostri scopi, analizziamo un flusso di dati per individuare sequenze di caratteri che corrispondono a uno schema specificato.

Le espressioni regolari hanno la reputazione di essere incantesimi oscuri e arcani che solo quelli con poteri magici speciali di amministratore di sistema usano. Questa singola riga di codice qui sotto (che ho usato per trasformare un file che mi è stato inviato in un modulo utilizzabile) sembrerebbe confermarlo:

$ cat Experiment_6-1.txt | grep -v Team | grep -v "^\s*$" | sed -e "s/[Ll]eader//" -e "s/\[//g" -e "s/\]//g" -e "s/)//g" | awk '{print $1" "$2" <"$3">"}' > addresses.txt

Questa pipeline di comandi sembra essere una sequenza intrattabile di parole senza senso per chiunque non conosca l'espressione regolare. Certamente mi è sembrato così la prima volta che ho incontrato qualcosa di simile all'inizio della mia carriera. Come vedrai, le espressioni regolari sono relativamente semplici una volta spiegate.

Possiamo solo cominciare a toccare tutte le possibilità che ci sono aperte dalle espressioni regolari in un unico articolo (anche in una singola serie). Ci sono interi libri dedicati esclusivamente alle espressioni regolari, quindi esploreremo le basi in una serie di articoli qui su Enable Sysadmin nella prossima settimana. Alla fine, saprai abbastanza per iniziare con le attività comuni agli amministratori di sistema. Se tutto va bene, avrai fame di saperne di più da solo dopo.

Nota: Questo articolo è una versione leggermente modificata del capitolo 6 del volume 2 del mio libro Linux, Using and Administering Linux:Zero to SysAdmin, in uscita da Apress alla fine del 2019.


Linux
  1. Iniziare con le espressioni regolari:un esempio

  2. Introduzione alle espressioni regolari

  3. La definizione di un'espressione regolare?

  4. Espressioni regolari avanzate nel comando Grep con 10 esempi - Parte II

  5. Espressioni regolari nel comando Grep con 10 esempi - Parte I

Presentazione di un cheat sheet di Groff Macros

Iniziare con le espressioni regolari

6 migliori strumenti CLI per cercare dati in testo semplice utilizzando espressioni regolari

Espressioni regolari in Grep (Regex)

Come si usano le espressioni regolari con il comando cp in Linux?

Come escludere i file dall'archivio TAR usando le espressioni regolari?