Se il file è solo una riga, puoi usare:
sed 's/^/insert this /' oldfile > newfile
Se è più di una riga. uno di:
sed '1s/^/insert this /' oldfile > newfile
sed '1,1s/^/insert this /' oldfile > newfile
Ho incluso quest'ultimo in modo che tu sappia come creare intervalli di linee. Entrambi "sostituiscono" il marcatore della linea di partenza sulle linee interessate con il testo che si desidera inserire. Puoi anche (supponendo che il tuo sed
è abbastanza moderno) usa:
sed -i 'whatever command you choose' filename
per eseguire modifiche sul posto.
Se vuoi aggiungere una riga all'inizio di un file, devi aggiungere \n
alla fine della stringa nella migliore soluzione sopra.
La soluzione migliore aggiungerà la stringa, ma con la stringa non aggiungerà una riga alla fine di un file.
sed -i '1s/^/your text\n/' file
Usa subshell:
echo "$(echo -n 'hello'; cat filename)" > filename
Sfortunatamente, la sostituzione del comando rimuoverà le nuove righe alla fine del file. Per mantenerli si può usare:
echo -n "hello" | cat - filename > /tmp/filename.tmp
mv /tmp/filename.tmp filename
Non è necessario né il raggruppamento né la sostituzione dei comandi.
sed
può operare su un indirizzo:
$ sed -i '1s/^/<added text> /' file
Cos'è questo magico 1s
vedi su ogni risposta qui? Indirizzamento di linea!.
Vuoi aggiungere <added text>
nelle prime 10 righe?
$ sed -i '1,10s/^/<added text> /' file
Oppure puoi usare Command Grouping
:
$ { echo -n '<added text> '; cat file; } >file.new
$ mv file{.new,}