Precedente: Comandi estesi, Su: Programmi di sed [Contenuti][Indice]
Fino a questo capitolo, abbiamo incontrato solo caratteri di protezione nella
forma ‘\^’, che dice a sed
di non interpretare
l’accento circonflesso come carattere speciale, ma piuttosto di prenderlo
letteralmente. Per esempio, ‘\*’ individua un asterisco piuttosto che
zero o più barre inverse.
Questo capitolo introduce un altro genere di protezione6—cioè,
protezioni che sono applicate a un carattere o a una sequenza di caratteri
che ordinariamente sono presi alla lettera, e che sed
rimpiazza
con un carattere speciale. Ciò fornisce un modo per codificare in maniera
visibile caratteri non stampabili contenuti nelle espressioni regolari.
Non c’è alcuna restrizione sull’aspetto dei caratteri che non vengono
stampati in uno script di sed
ma quando uno script è in
preparazione nella shell o tramite la scrittura di un testo, è
generalmente più facile adoperare una delle seguenti sequenze
di protezione piuttosto che il carattere binario corrispondente:
L’elenco di queste sequenze di protezione è:
\a
Genera o corrisponde a un carattere BEL, cioè un “segnale acustico” (ASCII 7).
\f
Genera o corrisponde a un avanzamento di pagina (form feed) (ASCII 12).
\n
Genera o corrisponde a un codice di fine riga (newline) (ASCII 10).
\r
Genera o corrisponde a un ritorno di carrello (carriage return) (ASCII 13).
\t
Genera o corrisponde a una tabulazione orizzontale (ASCII 9).
\v
Genera o corrisponde a una cosiddetta “tabulazione verticale” (ASCII 11).
\cx
Genera o corrisponde a CONTROL-x, dove x è un qualsiasi carattere. L’effetto dettagliato di ‘\cx’ è il seguente: se x è una lettera minuscola, viene convertita in maiuscola. Quindi il bit 6 del carattere (esa 40) viene invertito. Così ‘\cz’ diventa esa 1A, ‘\c{’ diventa esa 3B, e ‘\c;’ diventa esa 7B.
\dxxx
Genera o corrisponde a un carattere ASCII il cui valore decimale è xxx.
\oxxx
\xxx
Genera o corrisponde a un carattere ASCII il cui valore ottale è xxx.
La sintassi senza o
è attiva nella modalità Perl, mentre quella con
la o
è attiva nelle modalità POSIX normale ed estesa delle
espressioni regolari.
\xxx
Genera o corrisponde a un carattere ASCII il cui valore esadecimale è xx.
‘\b’ (backspace) è stato omesso a causa del conflitto con l’esistente significato di “word boundary”.
Altre sequenze di protezione corrispondono a una particolare classe di caratteri e sono valide solo nelle espressioni regolari:
\w
Corrisponde a qualsiasi carattere “parola”. Un carattere “parola” è qualunque lettera o cifra o il trattino basso.
\W
Corrisponde a qualsiasi carattere “non-parola”.
\b
Corrisponde a un confine di parola; cioè controlla se il carattere a sinistra è un carattere “parola” e il carattere a destra è un carattere “non-parola”, o viceversa.
\B
Corrisponde a qualsiasi carattere che non sia un confine di parola; ovvero si ha una corrispondenza se il carattere a sinistra e quello a destra sono entrambi caratteri “parola” o entrambi caratteri “non-parola”.
\`
Corrisponde solo all’inizio del pattern space. Questo è diverso
da ^
in modalità multiriga.
\'
Corrisponde solo alla fine del pattern space. Questo è diverso
da $
in modalità multiriga.
\G
Corrisponde solo all’inizio del pattern space o, se si sta effettuando
una sostituzione globale usando il comando s///g
con opzione g
,
alla posizione in cui terminava la corrispondenza precedente. Per esempio
il comando ‘s/\Ga/Z/g’ cambierà un’esecuzione iniziale di a
s
in un’esecuzione di Z
s
Tutte le
protezioni qui descritte sono estensioni GNU, con l’eccezione di
\n
. Nella modalità di base delle espressioni regolari,
l’impostazione POSIXLY_CORRECT
le disabilita all’interno delle
espressioni fra parentesi graffe.
Precedente: Comandi estesi, Su: Programmi di sed [Contenuti][Indice]