Questo documento sfrutta i fogli di stile (CSS); senza il supporto dei fogli di stile, benché il testo sia comunque visualizzabile, non saranno visibili ne le formattazioni ne la struttura della pagina.

Sommario    Precedente    Successivo

Guida sistematica a SED - parte 01

Raggruppare più istructions sotto un unico adress

Una delle esigenze che possono sorgere quando si utilizza SED è quella di processare con più istructions una riga che è stata selezionata con un adress.

La soluzione potrebbe essere quella di passare alla riga di comando, attraverso una serie di opzioni -e, più script che hanno in comune il medesimo adress.

Per eseguire due istructions sul medesimo intervallo di righe, adottando la soluzione sopra esposta, si ha:

Esempio: Raggruppare più script attraverso l'opzione -e
sed -e '1,10s/ unix / UNIX /' -e '1,10s/ UNIX / Unix System /' myfile.txt

Per facilitare le cose SED dà la possibilità di raggruppare più istructions sotto un medesimo adress.

Modello di raggruppamento di più sctipt sotto un unico adress
sed [opzioni] file_da_processare -e 'adress{
istructions1
istructions2
istructionsN
}'

Il raggruppamento di più istructions sotto un unico adress comporta che, dopo l'inserimento dell'adress, deve essere aperta la parentesi graffa; tale parentesi graffa deve essere l'ultimo carattere della riga.

Le istructions da raggruppare sotto l'andress vanno inserite, una per riga, a partire dalla riga successiva a qulla che contiene la parentesi graffa aperta.

Nella riga successiva all'ultima istructions da raggruppare viene inserita la parentesi graffa chiusa che termina lo script.

Da notare il mutamento della sintassi tipica della riga di comando: lo script che contiene il raggruppamento è l'ultimo argomento della riga di comando, mentre il file da processare è l'argomento che segue le altre opzioni del comando sed.

Questo mutamento di sintassi non è vincolante, ma è stato adottato per continuare ad usfruire della facilitazione di completamento automatico dei nomi dei file tipico di bash; se infatti si usasse la sintassi normale, per cui il nome del file da processare è l'ultimo argomento della linea di comando di SED, tale nome andrebbe sull'ultima riga dopo la chiusura della parentesi graffa (e dell'apice singolo); ho potuto notare che in tale posizione il completamento automatico non funaziona.

Esempio: Raggruppare senza utilizzare l'opzione -e
sed myfile.txt -e '1,10{
s/ unix / UNIX/
s/ UNIX / Unix System /
}'

É il caso di ricordare che il raggruppamento di più istructions sotto un medesimo adress, implica che sulla stessa riga caricata nel pattern space siano applicate più istructions e quindi la seconda istructions agisce su una riga che può essere già stata modifcata dalla prima e così via.