Estou surpreso que nesta pergunta antiga ninguém tenha mostrado o comando sed mais comum (e bastante simples nesse caso):
$ sed -i '1s/^/new_text\
/' file_name
Que funciona na maioria das conchas e é portátil para várias versões sed.
Se o GNU sed estiver disponível, você poderá usar o seguinte:
$ sed -i '1s/^/new_text\n' file_name
A diferença é que o GNU sed permite o uso de a \n
para uma nova linha e outros precisam de uma nova linha literal precedida por uma barra invertida (que também funciona no GNU sed de qualquer maneira).
Se um shell que aceita a $'…'
sintaxe estiver em uso, você poderá inserir a nova linha diretamente, para que o sed veja que a nova linha já está lá:
$ sed -i $'1s/^/new_text\\\n/' file_name
O que funciona para versões mais sed.