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


3.6 Comandi di uso meno frequente

Sebbene usati forse meno frequentemente di quelli visti nella precedente sezione, con questi comandi si possono fare dei piccoli ma sempre utili script di sed.

y/car-origine/car-dest/

(I caratteri / possono essere sostituiti regolarmente con qualsiasi altro carattere all’interno di ogni comando y dato.)

Traslittera qualsiasi carattere nel pattern space che corrisponde a uno dei car-origine col carattere corrispondente in car-dest.

Istanze di / (o qualsiasi altro carattere usato al suo posto), \, o newline possono comparire nelle liste car-origine o car-dest, posto che ogni occorrenza venga protetta con un \. Le liste car-origine e car-dest devono contenere lo stesso numero di caratteri (escludendo i caratteri di protezione).

a\
testo

Come estensione GNU, questo comando accetta due indirizzi.

Accoda le righe di testo che seguono questo comando (tutte tranne l’ultima terminante con un \, che viene rimosso dall’output) e le aggiunge al flusso in uscita alla fine del ciclo corrente, o quando viene letta la riga successiva.

Le sequenze di protezione in testo vengono interpretate, perciò per stampare una singola barra inversa si deve usare \\ in testo.

Come estensione GNU, se fra la a e il newline c’è qualcosa, oltre a una sequenza spazio-\, il testo di questa riga, a partire dal primo carattere non-spazio dopo la a, è preso come prima riga del blocco di testo (questo semplifica le cose quando si deve aggiungere una sola riga). Questa estensione vale anche per i comandi i e c.

i\
testo

Come estensione GNU, questo comando accetta due indirizzi.

Invia immediatamente al flusso in uscita le righe di testo che seguono questo comando (tutte tranne l’ultima terminante con una \, che viene rimossa dall’output).

c\
testo

Elimina le righe corrispondenti all’indirizzo o all’intervallo di indirizzi, e invia al flusso di uscita le righe di testo che seguono questo comando (tutte tranne l’ultima terminante con un \, che viene rimosso dall’output) al posto dell’ultima riga (o al posto di ogni riga, se non viene specificato un indirizzo). Una volta terminato questo comando viene avviato un nuovo ciclo, dal momento che il pattern space sarà stato cancellato.

=

Come estensione GNU, questo comando accetta due indirizzi.

Stampa a schermo il numero di riga corrente (con un newline finale).

l n

Stampa il pattern space in una forma non ambigua: i caratteri non stampabili (e il carattere \) vengono stampati nella forma protetta in stile C; le righe lunghe vengono spezzate, con un carattere \ finale per indicare la divisione; la fine di ogni riga è marcata con un $.

n specifica il numero massimo di caratteri per riga; una lunghezza di 0 (zero) significa che le righe lunghe non verranno mandate a capo. Se è omesso, viene usato quello predefinito come specificato sulla riga di comando. Il parametro n è un’estensione GNU sed.

r nome_file

Come estensione GNU, questo comando accetta due indirizzi.

Accoda il contenuto di nome_file in lettura e lo invia al flusso di uscita alla fine del ciclo corrente, o quando viene letta la riga successiva. Si noti che se nome_file non può essere letto, viene trattato come se fosse un file vuoto, senza alcuna indicazione di errore.

Come estensione GNU sed, può essere usato come nome di file il valore speciale /dev/stdin, che legge il contenuto dello standard input.

w nome_file

Scrive il pattern space in nome_file. Come estensione GNU sed, sono supportati due valori speciali di nome-file: /dev/stderr, che scrive il risultato sullo standard error, e /dev/stdout, che scrive sullo standard output.5

Il file verrà creato (o troncato) prima di leggere la prima riga in input; tutti i comandi w (comprese le istanze del parametro w sui comandi s andati a buon fine) che fanno riferimento allo stesso nome_file sono messi nel flusso di uscita senza chiudere e riaprire il file.

D

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.

N

Aggiunge un newline al pattern space, quindi accoda la riga successiva in input al pattern space. Se non ci sono altri dati in input, sed esce senza elaborare alcun altro comando.

P

Stampa a schermo la porzione del pattern space fino al primo newline.

h

Rimpiazza il contenuto dell’hold space col contenuto del pattern space.

H

Aggiunge un newline alla fine del contenuto dell’hold space, e poi accoda il contenuto del pattern space a quello dell’hold space.

g

Rimpiazza il contenuto del pattern space col contenuto dell’hold space.

G

Aggiunge un newline alla fine del contenuto del pattern space, e poi accoda il contenuto dell’hold space a quello del pattern space.

x

Scambia i contenuti dell’hold space e del pattern space.


Note a piè di pagina

(5)

Questo è equivalente a p a meno che non sia in uso l’opzione -i.


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