Personalmente iría con nano -w file.txt
;-) (es decir, solo use un editor de texto, no tiene que ser nano, por supuesto)
Pero si quisiera hacer esto en un entorno no interactivo por alguna razón, puede usar cat
para todo tipo de concatenaciones:
echo $'name\tage\tuniversity\tcity' | cat - file.txt > file2.txt
antepondrá el encabezado y colocará la salida en file2.txt
. Si desea sobrescribir el archivo original, puede hacerlo con
echo $'name\tage\tuniversity\tcity' | cat - file.txt > file2.txt; mv file{2,}.txt
O podrías usar sed
de la siguiente manera:
sed -i $'1 i\\\nname\tage\tuniversity\tcity' file.txt
Tenga en cuenta que estoy usando $'...'
citando para permitirme usar \t
para representar la pestaña y \n
para representar una nueva línea (entre otras sustituciones; consulte la página de manual de bash para obtener más información). En este tipo de cadena entre comillas, \\
representa una barra invertida literal. Así que el programa pasado a sed es en realidad
1 i\
name age university city
No hay un operador de "anteponer" como el operador de "añadir" >>
, pero puede escribir el encabezado en un archivo temporal, copiar el contenido de su archivo en el archivo temporal después de eso y moverlo hacia atrás:
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
O
$ printf '1\ni\nname\tage\tuniversity\tcity\n.\nw\n' | ed -s orig-file