Successivo: Protezioni, Precedente: Comandi di programmazione, Su: Programmi di sed [Contenuti][Indice]
sed
Questi comandi sono specifici di GNU sed
, perciò
devono essere usati con attenzione e solo quando si è sicuri che
trascurare la portabilità non abbia effetti negativi. Consentono di cercare
se esistono estensioni GNU sed
o fare compiti che sono richiesti piuttosto
spesso, benché non siano supportati dai comandi standard di sed
.
e [comando]
Questo comando consente di immettere nel pattern space
i dati prodotti da un comando di shell. Senza parametri, il comando e
esegue il comando trovato nel pattern space e rimpiazza il pattern space
con il risultato del comando; il newline finale viene soppresso.
Se invece viene specificato un parametro, il comando e
lo interpreta come comando e ne invia il risultato al flusso in uscita.
Il comando può proseguire su righe multiple, tutte tranne l’ultima
terminanti con una barra rovesciata (\)
.
In entrambi i casi, i risultati sono indefiniti se il comando da eseguire contiene un carattere NUL.
Si noti che, diversamente dal comando r
, il risultato
del comando verrà stampato immediatamente; il comando r
invece
rimanda l’emissione del risultato
alla fine del ciclo corrente.
F
Stampa a schermo il nome di file del file in input corrente (con un newline finale).
L n
Questa estensione GNU sed
allunga e unisce righe nel pattern space
per produrre righe di output di (al massimo) n caratteri, come fa
fmt
; se n viene omesso, viene usato il valore predefinito come
specificato sulla riga di comando. Questo comando è considerato un
esperimento non riuscito e, a meno che non vi siano richieste sufficienti
(il che sembra improbabile) verrà rimosso nelle versioni successive.
Q [codice-uscita]
Questo comando accetta un solo indirizzo.
Questo comando è lo stesso di q
, ma non stampa il
contenuto del pattern space. Come q
, offre la
capacità di ritornare un codice d’uscita al chiamante.
Questo comando può essere utile perché i soli metodi alternativi per portare a termine questa funzione apparentemente banale sono l’opzione -n (che può complicare inutilmente uno script) o il ricorrere al seguente frammento, che spreca tempo leggendo l’intero file senza alcun risultato visibile:
:eat $d Esci silenziosamente sull’ultima riga N Leggi un’altra riga, silenziosamente g Sovrascrivi il pattern space ogni volta per risparmiare memoria b eat
R nome_file
Mette in coda una riga di nome_file da leggere e inserire nel flusso in uscita alla fine del ciclo corrente, o quando viene letta la riga successiva. Si noti che se nome_file non può essere letto, o se ne è stata raggiunta la fine, non viene accodata nessuna riga, senza dare alcuna indicazione di errore.
Come per il comando r
, come nome di file può essere usato il valore
speciale /dev/stdin, che legge le righe dallo
standard input.
T etichetta
Salta all’etichetta solo se non sono avvenute con successo
s
ostituzioni dall’ultima riga letta o
se è stato fatto un salto condizionale. L’etichetta può essere
omessa; nel qual caso viene avviato il nuovo ciclo.
v versione
Questo comando non esegue azioni, ma fa fallire sed
se
non sono supportate estensioni GNU sed
, semplicemente perché altre
versioni di sed
non le supportano. In aggiunta, si
può specificare la versione di sed
richiesta dallo script
in uso, per esempio 4.0.5
. Quella predefinita è 4.0
perché è la prima versione che implementa questo comando.
Questo comando abilita tutte le Estensioni GNU anche se
POSIXLY_CORRECT
è impostato nell’ambiente.
W nome_file
Scrive nel file specificato la porzione del pattern space fino al
primo newline. Tutto ciò che è stato detto per il comando
w
sulla gestione dei file vale anche qui.
z
Questo comando svuota il pattern space. Solitamente si comporta
come ‘s/.*//’, ma è più efficiente
e funziona in presenza di sequenze multibyte non valide
nel flusso in input. POSIX richiede che tale sequenza
non trovi corrispondenza con ‘.’, cosicché non c’è nessun
modo portabile di liberare memoria dai buffer di sed
nel mezzo di uno
script nella maggior parte delle localizzazioni multibyte (comprese le
localizzazioni UTF-8).
Successivo: Protezioni, Precedente: Comandi di programmazione, Su: Programmi di sed [Contenuti][Indice]