Personalmente sceglierei nano -w file.txt
;-) (ovvero usa solo un editor di testo, ovviamente non deve essere nano)
Ma se vuoi farlo in un ambiente non interattivo per qualche motivo, puoi usare cat
per tutti i tipi di concatenazioni:
echo $'name\tage\tuniversity\tcity' | cat - file.txt > file2.txt
anteporrà l'intestazione e inserirà l'output in file2.txt
. Se vuoi sovrascrivere il file originale puoi farlo con
echo $'name\tage\tuniversity\tcity' | cat - file.txt > file2.txt; mv file{2,}.txt
Oppure potresti usare sed
come segue:
sed -i $'1 i\\\nname\tage\tuniversity\tcity' file.txt
Nota che sto usando $'...'
citando per permettermi di usare \t
per rappresentare tab e \n
per rappresentare la nuova riga (tra le altre sostituzioni; vedere la pagina man di bash per ulteriori informazioni). In questo tipo di stringa tra virgolette, \\
rappresenta una barra rovesciata letterale. Quindi il programma passato a sed è in realtà
1 i\
name age university city
Non esiste un operatore "prepend" come l'operatore "append" >>
, ma puoi scrivere l'intestazione in un file temporaneo, copiare il contenuto del tuo file nel file temporaneo e poi spostarlo indietro:
echo -e "name\tage\tuniversity\tcity" | cat - yourfile > /tmp/out && mv /tmp/out yourfile
$ { printf 'name\tage\tuniversity\tcity\n'; cat orig-file; } > new-file
Oppure
$ printf '1\ni\nname\tage\tuniversity\tcity\n.\nw\n' | ed -s orig-file