Successivo: , Su: Programmi di sed   [Contenuti][Indice]


3.1 Funzionamento di sed

sed dispone di due aree di memoria transitorie (buffer): lo spazio di espressione regolare attivo e lo spazio ausiliario di hold . Entrambi sono inizialmente vuoti.

sed opera eseguendo il seguente ciclo per ogni riga in input: dapprima sed legge una riga dal flusso in input, rimuovendo i newline finali, e la mette nel pattern space. Quindi vengono eseguiti i comandi; ogni comando può avere un indirizzo associato; gli indirizzi sono una specie di codice di condizione, e un comando viene eseguito solo se la relativa condizione è verificata prima dell’esecuzione del comando.

Raggiunta la fine dello script, a meno che non sia in uso l’opzione -n, i contenuti del pattern space vengono stampati sul flusso in uscita, riaggiungendo il newline finale se era stato rimosso.3 Poi lo stesso ciclo è ripetuto per la successiva riga in input.

A meno che non vengano usati comandi speciali (come ‘D’), il pattern space viene cancellato fra un ciclo e il successivo. L’hold space, di contro, mantiene i suoi dati tra cicli successivi (si vedano i comandi ‘h’, ‘H’, ‘x’, ‘g’, ‘G’ per consentire lo spostamento dei dati da un’area transitoria all’altra).


Note a piè di pagina

(3)

In realtà, se sed stampa una riga senza il newline finale, stampa tuttavia il newline mancante non appena si invia dell’altro testo al medesimo flusso in uscita, il che produce la “minor sorpresa possibile” anche se non rende comandi come ‘sed -n p’ esattamente identici al comando cat.