Personnellement, j'irais avec nano -w file.txt
;-) (c'est-à-dire qu'il suffit d'utiliser un éditeur de texte, il n'est pas nécessaire d'être nano bien sûr)
Mais si vous vouliez le faire dans un environnement non interactif pour une raison quelconque, vous pouvez utiliser cat
pour toutes sortes de concaténations :
echo $'name\tage\tuniversity\tcity' | cat - file.txt > file2.txt
ajoutera l'en-tête et mettra la sortie dans file2.txt
. Si vous souhaitez écraser le fichier d'origine, vous pouvez le faire avec
echo $'name\tage\tuniversity\tcity' | cat - file.txt > file2.txt; mv file{2,}.txt
Ou vous pouvez utiliser sed
comme suit :
sed -i $'1 i\\\nname\tage\tuniversity\tcity' file.txt
Notez que j'utilise $'...'
citant pour me permettre d'utiliser \t
pour représenter tabulation et \n
pour représenter une nouvelle ligne (parmi d'autres substitutions ; voir la page de manuel bash pour plus d'informations). Dans ce type de chaîne entre guillemets, \\
représente une barre oblique inverse littérale. Donc le programme passé à sed est en fait
1 i\
name age university city
Il n'y a pas d'opérateur "prepend" comme l'opérateur "append" >>
, mais vous pouvez écrire l'en-tête dans un fichier temporaire, copier ensuite le contenu de votre fichier dans le fichier temporaire et le déplacer en arrière :
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
Ou
$ printf '1\ni\nname\tage\tuniversity\tcity\n.\nw\n' | ed -s orig-file