Successivo: , Precedente: , Su: Programmi di sed   [Contenuti][Indice]


3.8 Comandi specifici di GNU 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 sostituzioni 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: , Precedente: , Su: Programmi di sed   [Contenuti][Indice]