Successivo: , Precedente: , Su: Top   [Contenuti][Indice]


2 Invocazione

Generalmente sed viene invocato in questo modo:

sed SCRIPT FILE_DI_INPUT...

Il formato completo per invocare sed è:

sed OPZIONI... [SCRIPT] [FILE_DI_INPUT...]

Se non viene specificato FILE_DI_INPUT, o se FILE_DI_INPUT è -, sed filtra i contenuti dello standard input. Lo script è in realtà il primo parametro dopo le opzioni, e sed lo considera come uno script e non come un file di input se (e solo se) nessuna delle altre opzioni indica uno script da eseguire, cioè se non vengono specificate le opzioni -e o -f.

sed può essere invocato con le seguenti opzioni da riga di comando:

--version

Stampa a video la versione di sed in esecuzione con una nota di copyright ed esce.

--help

Stampa a video un messaggio sull’uso che descrive in breve queste opzioni da riga di comando, e l’indirizzo per la segnalazione dei bug, poi esce.

-n
--quiet
--silent

Per impostazione predefinita, sed stampa a video il pattern space alla fine di ogni ciclo di elaborazione dello script (vedi Funzionamento di sed). Queste opzioni disabilitano questa stampa automatica, e sed produce output solo quando lo si chiede esplicitamente col comando p.

-e script
--expression=script

Aggiunge i comandi in script alla serie di comandi da eseguire durante l’elaborazione dei dati di input.

-f file script
--file=file script

Aggiunge i comandi contenuti nel file file script alla serie di comandi da eseguire durante l’elaborazione dei dati di input.

-i[SUFFISSO]
--in-place[=SUFFISSO]

Quest’opzione specifica che i file devono essere modificati direttamente, sovrascrivendo il file originale. Per fare questo GNU sed crea un file temporaneo e invia il risultato a questo file anziché allo standard output.1.

Quest’opzione implica l’opzione -s.

Quando viene raggiunta la fine del file, il file temporaneo viene rinominato col nome del file originale. L’estensione, se fornita, è usata per modificare il nome del vecchio file prima di rinominare il file temporaneo, facendo quindi una copia di backup 2).

Viene seguita questa regola: se l’estensione non contiene un *, questo viene aggiunto alla fine del nome di file corrente come suffisso; se l’estensione contiene uno o più caratteri *, allora ogni asterisco viene sostituito col nome di file corrente. Questo consente di aggiungere un prefisso al file di backup al posto di un suffisso (o in aggiunta ad esso), o anche di mettere le copie di backup dei file originali in un’altra directory (purché la directory esista già).

Se non vengono fornite estensioni, il file originale viene sovrascritto senza fare una copia di backup.

-l N
--line-length=N

Specifica la lunghezza predefinita della riga per il ritorno a capo automatico nel comando l. Una lunghezza di 0 (zero) significa che le righe non verranno mai divise. Se non specificato, viene usata una lunghezza di 70 caratteri.

--posix

GNU sed include diverse estensioni a POSIX sed. Per semplificare la scrittura di script portabili, questa opzione disabilita tutte le estensioni documentate in questo manuale, compresi i comandi aggiuntivi. La maggior parte delle estensioni accetta programmi sed che sono al di fuori della sintassi permessa da POSIX, ma alcune di esse (come il comportamento del comando N descritto in Segnalare Bug) viola realmente lo standard. Per disabilitare solo quest’ultimo tipo di estensioni, impostare la variabile POSIXLY_CORRECT a un valore non nullo.

-b
--binary

Quest’opzione è disponibile per ogni tipo di piattaforma, ma è efficace solo dove il sistema operativo distingue tra file di testo e file binari. Nei casi in cui tale distinzione vien fatta—come in MS-DOS, Windows, Cygwin—i file di testo sono composti di righe separate da un “ritorno carrello” (carriage return) e da un carattere di “nuova riga” (line feed), e sed non vede il CR finale. Quando viene specificata quest’opzione, sed apre i file in input in modalità binaria, non richiedendo così questa speciale elaborazione e considerando le righe come terminanti con un carattere di “nuova riga” (line feed).

--follow-symlinks

Quest’opzione è disponibile solo sulle piattaforme che supportano i collegamenti simbolici e vale solo quando viene specificata l’opzione -i. In questo caso, se il file che viene specificato sulla riga di comando è un collegamento simbolico, sed segue il collegamento e modifica la destinazione finale del collegamento. Il comportamento predefinito è quello di rompere il collegamento simbolico, in modo che non venga modificata la destinazione finale del collegamento.

-r
--regexp-extended

Usa espressioni regolari estese al posto delle espressioni regolari di base. Le espressioni regolari estese sono quelle che vengono accettate da egrep; possono risultare più chiare perché in genere hanno meno barre inverse (\), ma sono un’estensione di GNU e perciò gli script che le usano non sono portabili. Vedi Espressioni regolari estese.

-R
--regexp-perl

Usa espressioni regolari in stile Perl al posto delle espressioni regolari di base. Le espressioni regolari in stile Perl sono molto potenti, ma sono un’estensione di GNU sed e perciò gli script che le usano non sono portabili. Vedi Espressioni regolari in stile Perl.

-s
--separate

Come comportamento predefinito, sed considera i file specificati sulla riga di comando come un unico flusso continuo. Questa estensione di GNU sed consente all’utente di considerarli come file separati; indirizzi di intervallo (come ‘/abc/,/def/’) non possono appartenere a file diversi, i numeri di riga sono relativi all’inizio di ogni file, $ si riferisce all’ultima riga di ogni file, e i file invocati dai comandi R vengono riletti dall’inizio, per ogni file.

-u
--unbuffered

Esegue le operazioni di input e output quanto più spesso possibile. (Ciò è particolarmente utile se l’input proviene da comandi del tipo ‘tail -f’, e si desidera vedere l’output prodotto da sed il più presto possibile.)

-z
--null-data
--zero-terminated

Tratta i dati di input come una serie di righe, ciascuna delle quali termina con un byte a zeri binari (il carattere ASCII ‘NUL’) invece che con un carattere “newline”. Quest’opzione può essere usata con comandi come ‘sort -z’ e ‘find -print0’ per elaborare nomi di file arbitrari.

Se da riga di comando non viene data nessuna delle opzioni -e, -f, --expression o --file, il primo argomento diverso da un’opzione sulla riga di comando è supposto essere lo script da eseguire.

Se resta ancora qualche parametro sulla riga di comando, dopo aver controllato quelli sopra descritti, questi parametri sono interpretati come nomi di file in input da elaborare. Un nome di file ‘-’ si riferisce al flusso dello standard input (stdin). Se non vengono specificati nomi di file verrà elaborato lo standard input.


Note a piè di pagina

(1)

Questo si applica a comandi come =, a, c, i, l, p. È ancora possibile scrivere sullo standard output usando i comandi w o W assieme al file speciale /dev/stdout

(2)

Si noti che GNU sed crea il file di backup indipendentemente dal fatto che il file sia stato modificato o che sia rimasto uguale a prima.


Successivo: , Precedente: , Su: Top   [Contenuti][Indice]