Si el archivo es de una sola línea, puede usar:
sed 's/^/insert this /' oldfile > newfile
Si es más de una línea. uno de:
sed '1s/^/insert this /' oldfile > newfile
sed '1,1s/^/insert this /' oldfile > newfile
He incluido este último para que sepas cómo hacer rangos de líneas. Ambos "reemplazan" el marcador de línea de inicio en sus líneas afectadas con el texto que desea insertar. También puede (suponiendo que su sed
es lo suficientemente moderno) use:
sed -i 'whatever command you choose' filename
para hacer la edición en el lugar.
Si desea agregar una línea al principio de un archivo, debe agregar \n
al final de la cadena en la mejor solución anterior.
La mejor solución agregará la cadena, pero con la cadena, no agregará una línea al final de un archivo.
sed -i '1s/^/your text\n/' file
Usar subcapa:
echo "$(echo -n 'hello'; cat filename)" > filename
Desafortunadamente, la sustitución de comandos eliminará las líneas nuevas al final del archivo. Para conservarlos se puede utilizar:
echo -n "hello" | cat - filename > /tmp/filename.tmp
mv /tmp/filename.tmp filename
No es necesario agrupar ni sustituir comandos.
sed
puede operar en una dirección:
$ sed -i '1s/^/<added text> /' file
¿Qué es este 1s
mágico? ves en cada respuesta aquí? ¡Direccionamiento de línea!.
Quiere agregar <added text>
en las primeras 10 líneas?
$ sed -i '1,10s/^/<added text> /' file
O puede usar Command Grouping
:
$ { echo -n '<added text> '; cat file; } >file.new
$ mv file{.new,}