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