In questo articolo, vedremo i diversi modi per aggiungere un record di intestazione o un record di trailer a un file.
Consideriamo un file, file1.
$ cat file1 apple orange grapes banana
Aggiunta di una riga all'inizio del file (intestazione)
1. Per aggiungere un record di intestazione utilizzando sed:
$ sed '1i some text at the beginning' file1 some text at the beginning apple orange grapes banana
La '1i' in sed include(i) la riga del testo all'inizio solo prima della prima riga(1) del file. Il comando precedente mostra il contenuto del file insieme all'intestazione senza aggiornare il file. Per aggiornare il file originale stesso, usa l'opzione -i di sed come mostrato di seguito:
$ sed -i.bkp '1i some text at the beginning' file1
L'opzione -i.bkp crea un file di backup denominato file1.bkp prima di apportare modifiche al file originale. L'estensione .bkp può essere qualsiasi cosa a tua scelta.
2. Puoi anche usare questo esempio di sed per inserire una riga di intestazione:
$ sed '1s/^/some text at the beginning\n/' file1
'1' indica il numero di riga che verrà abbinato solo durante la sostituzione con il comando 's'. Il simbolo '^' indica l'inizio della riga. Nota anche il ritorno a capo '\n' aggiunto alla fine, che aiuta a stampare una nuova riga dopo la sostituzione.
3. Puoi anche usare il comando cat con l'istruzione bash printf per aggiungere una riga all'inizio del file.
$ printf '%b' 'some text at the beginning\n' | cat - file1
4. Per aggiungere un record di intestazione a un file utilizzando awk:
$ awk 'BEGIN{print "some text at the beginning"}1' file1 some text at the beginning apple orange grapes banana
Il INIZIO istruzione in awk fa in modo che all'inizio venga stampato del testo prima di elaborare il file, e quindi l'intestazione appare nell'output. L'1 sta ad indicare di stampare ogni riga del file.
Aggiunta di una riga alla fine del file (trailer)
1. Il più semplice di tutti i comandi qui è semplice utilizzare il reindirizzamento per aggiungere una riga alla fine del file. Ad esempio:
$ echo "some text at the end" >> file1
2. Per aggiungere un record trailer a un file utilizzando sed:
$ sed '$a some text at the end' file1 apple orange grapes banana some text at the end
Il $a fa in modo che il sed aggiunga(a) all'istruzione del testo alla fine solo dopo l'ultima riga($) del file.
3. Per aggiungere un record trailer a un file utilizzando awk:
$ awk '1;END{print "some text at the end"}' file apple orange grapes banana some text at the end
La FINE label fa in modo che l'istruzione print venga stampata solo dopo che il file è stato elaborato. L'1 è quello di stampare ogni riga. 1 in realtà significa vero.
installato su MAC OSX
sed si comporta in modo leggermente diverso su MAC OS, rispetto a GNU sed. Puoi provare sotto sed esempio per aggiungere la riga di intestazione al file in MAC.
$ sed -i '.bak' '1s/^/some text at the beginning\'$'\n/g' file1