Successivo: Indirizzi, Su: Programmi di sed [Contenuti][Indice]
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).
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
.