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

Eseguire l'istructions su un intervallo di righe

Contenuti della Sezione

  1. Eseguire l'istructions su un intervallo di righe
    1. Definire un intervallo con due adress espressione regolare

SED da la possibilità di selezionare un intervallo di righe di testo su cui eseguire una o più istructions specificate: per mezzo di due adress separati da virgole è possibile definire tale intervallo.

Modello per la selezione dell'intervallo
adress1,adress2Istruction

La prima riga dell'intervallo è quella selezionata da adress1, l'ultima riga dell'intervallo è quella che sarà elezionata da adress2; su tutte le righe esistenti fra la prima e l'ultima, comprese la prima e l'ultima, sarà eseguita l'istruction dello script.

Se la riga caricata nel pattern space è in effetti all'interno dell'intervallo definito con i due adress, allora su tale riga è eseguita l'istruction.

Esempio: Selezionare un intervallo con due adress numero di riga
sed -e '5,10d' miofile.txt

L'adress che identifica la prima riga dell'intervallo può essere di tipo diverso dall'adress che identifica l'ultima riga dell'intervallo; per cui, ad esempio, il primo adress può ssere di tipo numero di linea, mentre il secondo può essere di tipo espressione regolare.

Esempio: Selezionare un intervallo con due adress di tipo diverso
sed -n -e '1,/^$/p' myfile.txt

L'inversione della selezione, definita dal modificatore !, è applicabile anche agli intervalli.

In pratica le istructions dello script saranno applicate su tutte le righe che non fano parte dell'intervallo o degli intervalli individuati con i due adress.

Definire un intervallo con due adress espressione regolare

Merita maggiore attenzione un intervallo definito da due adress di tipo espressione regolare, in quanto la corrispondenza al modello, sia del primo che del secondo adress, può sussistere in più righe dello stream di input.

SED parte confrontando le righe con l'espressione del primo adress; nel momento in cui verifica la corrispondenza, tale riga viene selezionata e su di essa vengono eseguite le istructions dello script.

Le righe successive a quella corrispondente al primo adress vengono invece confrontate con il modello regexp del secondo adress; se la corrispondenza non viene verificata, esse sono comunque selezionate, in quanto membri dell'intervallo definito dai due adress di tipo regexp; su ciascuna di queste righe vengono applicate le istructions dello script.

Quando la corrispondenza con il modello del secondo adress è verificata, vuol dire che siamo arrivati all'ultima riga dell'intervallo; tale riga viene selezionata e su di essa vengono esguite le istructions dello script.

A questo punto, SED riparte a confrontare le righe successive all'ultima riga dell'intervallo, con il modello regexp del primo adress, e nel caso vi sia una corrispondenza, il ciclo descritto precedentemente si ripete.