GUIDA A SED, 01 – includere/appendere

INCLUDERE O “APPENDERE” UNA LINEA AD UN FILE

 

Aggiungere una riga come header e 1 come “separatore” fra header e prima riga dei valori:

$ cat test
italia, roma
francia, parigi
inghilterra, londra
$ sed -e '1i stato capitale' -e '1a ---------------------' test
stato capitale
------ ------------
italia, roma
francia, parigi
inghilterra, londra

Il numero “1” indica a sed che l’operazione deve essere fatta solo nella prima riga e “i” “include” indica di includere il contenuto seguente prima di leggere il file. il -e (edit) e il quoting forte (”) concatenano le operazioni facendo si che vengano svolte in successione.

Se voglio che la linea venga aggiunta dopo aver letto il file, anzichè l'”i” utilizzo l'”a”:

$ sed -e '1i stato capitale' test | sed '1a ====================='
stato capitale
=====================
italia, roma
francia, parigi
inghilterra, londra

In questi 2 comandi in pipe viene aggiunta la prima linea prima che il file venga letto. Poi viene letto e aggiunta la linea “=================” dopo aver letto la prima riga.

L’elaborazione viene effettuata sullo standard output senza variare il file “sorgente”.

Se voglio che l’operazione venga effettuata direttamente sul file “sorgente” editandolo, uso l’opzione “-i”:

$ sed -i -e '1i stato capitale' -e '1i ------ ------------' test
$ cat test
stato capitale
------ ------------
italia, roma
francia, parigi
inghilterra, londra

Per aggiungere una linea trailer ad un file:

$ sed '$a -------- fine ---------------' test
italia, roma
francia, parigi
inghilterra, londra
-------- fine ---------------

Il simbolo “$” indica l’ultima linea. Assieme alla “a” indica “dopo aver letto l’ultima linea”.

Per aggiungere un record dopo un record dato:

$ sed -e '1i stato capitale' test | sed '1a =====================' |sed '$a -------- fine ---------------' |sed '/parigi/a germania,berlino'
stato capitale
=====================
italia, roma
francia, parigi
germania,berlino
inghilterra, londra
-------- fine ---------------

Nell’ultimo pipe indico a sed di aggiungere il record “germania,berlino” dopo aver letto (per effetto di “a”) il record contenente “parigi”.

Allo stesso modo per aggiungere lo stesso record PRIMA di record dato, il comando sarà uguale tranne per la “i” al posto della “a”. L’aggiunta avverrà quindi PRIMA di aver letto il record dato.

$ sed -e '1i stato capitale' test | sed '1a =====================' |sed '$a -------- fine ---------------' |sed '/parigi/i germania,berlino'
stato capitale
=====================
italia, roma
germania,berlino
francia, parigi
inghilterra, londra
-------- fine ---------------

——————————————————————–

INDICE

Lascia una risposta

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>