Scroll to navigation

SED(1) Comandi utente SED(1)

NOME

sed - un editori di flusso per filtrare e trasformare testo

SINTASSI

sed [-V] [--version] [--help] [-n] [--quiet] [--silent]

[-l N] [--line-length=N] [-u] [--unbuffered]
[-E] [-r] [--regexp-extended]
[-e script] [--expression=script]
[-f script-file] [--file=script-file]
[script-if-no-other-script]
[file...]

DESCRIZIONE

Sed è un editor di flusso. Un editor di flusso è usato per eseguire trasformazioni di testo elementari su un flusso di dati di input (un file o un input tramite pipeline). Anche se simile per certi versi a un editor che permette modifiche tramite script (come ed), sed lavora facendo solo un passaggio sull’input, o su più file in input, e di conseguenza è più efficiente. Ma è l’abilità di sed di filtrare testi in una pipeline che lo differenzia in modo particolare dagli altri tipi di editor.

-n, --quiet, --silent

disabilita la stampa automatica del pattern space

--debug

registra l’esecuzione del programma

-e script, --expression=script

aggiunge lo script ai comandi da eseguire

-f file-script, --file=file-script

aggiunge i contenuti di file-script ai comandi da eseguire

--follow-symlinks

segue il collegamento simbolico quando i file sono modificati direttamente

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

modifica i file direttamente, sovrascrivendo il file originale (esegue il backup se è stato fornito SUFFISSO)

-l N, --line-length=N

specifica la lunghezza desiderata della riga per il ritorno a capo automatico nel comando 'l'

--posix

disabilita tutte le estensioni GNU

-E, -r, --regexp-extended

usa espressioni regolari estese nello script (per portabilità si usi POSIX -E).

-s, --separate

considera i file come separati piuttosto che come un unico lungo flusso continuo .

--sandbox

opera in modalità sandbox (disabilita i comandi e/r/w).

-u, --unbuffered

carica una minima quantità di dati dai file in input e svuota la memoria transitoria (buffer) di output più spesso

-z, --null-data

separa le righe con caratteri NULL
mostra questo testo d'aiuto (help) ed esce
mostra le informazioni sulla versione ed esce.

Se non viene data nessuna delle opzioni -e, --expression -f, o --file, il primo argomento diverso da un’opzione è supposto essere lo script da interpretare. Tutti gli argomenti rimanenti sono nomi di file in input; se non vengono specificati nomi di file verrà letto lo standard input.

Pagina principale di GNU sed: <https://www.gnu.org/software/sed/>. Informazioni di carattere generale sull'uso del sofware GNU: <https://www.gnu.org/gethelp/>. Inviare i rapporti sui bug a: <bug-sed@gnu.org>.

Impacchettato da Debian Copyright © 2022 Free Software Foundation, Inc. Licenza GPLv3+: GNU GPL versione 3 o successiva <https://gnu.org/licenses/gpl.html>. Questo è software libero: è permesso modificarlo e ridistribuirlo. Non c'è ALCUNA GARANZIA, nella misura consentita dalla legge.

SINOSSI DEI COMANDI

Questo è semplicemente un breve riassunto dei comandi sed come promemoria per chi già conosce sed; per una descrizione più completa dev'essere consultata altra documentazione (come il documento texinfo).

"comandi" senza indirizzo

: etichetta
Etichetta per i comandi di b e t
#commento
Il commento si estende fino al newline successivo (o alla fine di un frammento di script -e).
}
La parentesi graffa di chiusura di un blocco { }.

Comandi senza o con un indirizzo

=
Stampa il numero di riga corrente.
Aggiunge testo, che ha ogni newline inserito preceduto da una barra inversa.
Inserisce testo, che ha ogni newline inserito preceduto da una barra inversa.
Esce immediatamente dallo script sed senza tener conto di eventuali ulteriori immissioni; tranne quando la stampa automatica non è disabilitata, viene stampato il pattern space. L'argomento del codice d'uscita è un'estensione GNU.
Esce immediatamente dallo script sed senza tener conto di eventuali ulteriori immissioni. È un'estensione GNU.
Aggiunge del testo da nome_file
Aggiunge una riga letta da nome_file. Ogni invocazione del comando legge una riga dal file. È un'estensione GNU.

Comandi che accettano intervalli di indirizzi

{
Inizia un un blocco di comandi (termina con una }).
Salta all’etichetta; se etichetta è omessa, salta alla fine dello script.
Sostituisce le righe selezionate con testo, che ha ogni newline inserito preceduto da una barra inversa.
Cancella il pattern space. Inizia il ciclo successivo.
Se il pattern space non contiene newline, inizia un nuovo ciclo normale come se fosse stato dato il comando d. Altrimenti, cancella il testo nel pattern space fino al primo newline, e ricomincia il ciclo col pattern space risultante, senza leggere una nuova riga.
Copia/aggiunge il pattern space all'hold space.
Copia/aggiunge l'hold space al pattern space.
Elenca la riga corrente in una forma "visualmente" non ambigua.
l lunghezza
Elenca la riga corrente in una forma “visualmente” non ambigua, interrompendola ai caratteri lunghezzaQuesta è un'estensione GNU.
Legge/aggiunge la successiva riga di input nel pattern space.
Stampa il pattern space corrente
Stampa a schermo la porzione del pattern space corrente fino al primo newline.
Confronta regexp con il pattern space. Se il confronto ha esito positivo, quella parte del pattern space che corrisponde all’espressione regolare è sostituita con rimpiazzo. Il rimpiazzopuò contenere il carattere speciale & per far riferimento alla porzione trovata del pattern space, e i caratteri protetti da \1 a \9 per far riferimento alle rispettive sotto-espressioni che trovano corrispondenza in regexp.
Se s/// ha effettuato una sostituzione andata a buon fine dall’ultima riga letta o dall'ultimo comando t o T, salta all’etichetta; se etichetta è omessa; salta alla fine dello script.
Se nessun s/// ha effettuato una sostituzione andata a buon fine dall’ultima riga letta o dall'ultimo comando t o T, salta all’etichetta; se etichetta è omessa; salta alla fine dello script. È un'estensione GNU.
Scrive il pattern space corrente in nome_file.
Scrive la prima riga del pattern space in nome_file. È un'estensione GNU.
Scambia i contenuti dell’hold space e del pattern space.
Traslittera qualsiasi carattere nel pattern space che appare in origine col carattere corrispondente in dest.

Indirizzi

I comandi Sed possono essere dati senza indirizzi, nel qual caso il comando viene eseguito su tutte le righe; con un indirizzo, nel qual caso il comando viene eseguito solo per le righe di input che corrispondono a quell'indirizzo; o con due indirizzi, nel qual caso il comando viene eseguito per tutte le righe di input che corrispondono all'intervallo di righe che iniziano dal primo indirizzo (incluso) e continuano fino al secondo indirizzo (incluso). Tre cose da notare sugli intervalli di indirizzi: la sintassi è addr1,addr2 (gli indirizzi sono separati da una virgola); la riga che corrisponde a addr1 verrà sempre accettata, anche se addr2 seleziona una riga precedente; e se addr2 è una regexp, non sarà testata sulla riga che corrisponde a addr1.

Dopo l'indirizzo (o intervallo di indirizzi), e prima del comando, può essere inserito un !, il quale specifica che ieguito solo se not vengono trovate corrispondenze con l'indirizzo (o intervallo di indirizzi).

Sono supportati i seguenti tipi di indirizzo:

Cerca corrispondenze solo nel numero di riga specificato (che incrementa cumulativametne lungo i file, a meno che non si sia specificata l'opzione -s sulla riga di comando).
Cerca corrispondenze ogni passo di righe a partire dalla riga prima_riga. Per esempio, “sed -n 1~2p” stampa tutte le righe dispari nel flusso in entrata, e l'indirizzo 2~5 corrisponde a ogni quinta riga, a partire dalla seconda. prima_riga può essere anche zero, nel qual caso sed opera come se fosse uguale a passo . (Questa è un'estensione.)
$
Corrisponde all'ultima riga.
/regexp/
Seleziona le righe che corrispondono all’espressione regolare regexp. Il confronto è effettuato sul pattern space corrente, che può essere modificato con comandi come“s///”.
Seleziona le righe che corrispondono all’espressione regolare regexp. Il carattere c può essere sostituito da qualsiasi altro carattere.

GNU sed supporta anche alcune forme speciali a 2 indirizzi:

0,addr2
Inizia nello stato "trovata corrispondenza col primo indirizzo", fino a quando non viene trovato addr2. È simile a 1,addr2 con la differenza che, se addr2 trova una corrispondenza proprio nella prima riga,la forma 0,addr2 la considera come fine dell’intervallo, mentre la forma 1,addr2 la considera come l’inizio di quest’intervallo. Questo funziona solo quando addr2 è un'espressione regolare.
Trova addr1 e le N righe che seguono addr1.
Trova addr1 e le righe successive a addr1 fino alla prossima riga il cui numerodi riga è un multiplo di N.

ESPRESSIONI REGOLARI

Le BRE (Basic Regular Expression) POSIX.2 dovrebbero essere supportate, ma non lo sono completamente per problemi legati alle prestazioni. La sequenza \n in un'espressione regolare corrisponde al carattere di fine riga (newline), e similmente per \a, \t, e altre sequenze. L'opzione -E invece passa all'uso delle espressioni regolari estese; è stato supportato per anni da GNU sed, e ora è stato incluso in POSIX.

BUG

Inviare i rapporti sui bug a bug-sed@gnu.org. Includere anche il risultato di “sed --version” nel corpo del messaggio, se possibile.

AUTORE

Scritto da ay Fenlason, Tom Lord, Ken Pizzini, Paolo Bonzini, Jim Meyering e Assaf Gordon.

Questo programma sed è stato costruito col supporto di SELinux. SELinux è disabilitato su questo sistema.

Pagina principale di GNU sed: <https://www.gnu.org/software/sed/>. Informazioni di carattere generale sull'uso del sofware GNU: <https://www.gnu.org/gethelp/>. Inviare i rapporti sui bug a: <bug-sed@gnu.org>.

VEDERE ANCHE

awk(1), ed(1), grep(1), tr(1), perlre(1), sed.info, uno dei diversi libri su sed, le FAQ di sed (http://sed.sf.net/grabbag/tutorials/sedfaq.txt), http://sed.sf.net/grabbag/.

La documentazione completa di sed è mantenuta come manuale Texinfo. Se i programmi info e sed sono installati correttamente sul vostro sistema, il comando

info sed

dovrebbe fornire l'accesso al manuale completo.

TRADUZIONE

La traduzione italiana di questa pagina di manuale è stata creata da Marco Curreli <marcocurreli@tiscali.it>

Questa traduzione è documentazione libera; leggere la GNU General Public License Versione 3 o successiva per le condizioni di copyright. Non ci assumiamo alcuna responsabilità.

Per segnalare errori nella traduzione di questa pagina di manuale inviare un messaggio a pluto-ildp@lists.pluto.it.

aprile 2026 GNU sed 4.9