Si le fichier ne contient qu'une seule ligne, vous pouvez utiliser :
sed 's/^/insert this /' oldfile > newfile
Si c'est plus d'une ligne. l'un des :
sed '1s/^/insert this /' oldfile > newfile
sed '1,1s/^/insert this /' oldfile > newfile
J'ai inclus ce dernier pour que vous sachiez comment faire des plages de lignes. Ces deux "remplacent" le marqueur de ligne de départ sur leurs lignes affectées par le texte que vous souhaitez insérer. Vous pouvez également (en supposant que votre sed
est assez moderne) utilisez :
sed -i 'whatever command you choose' filename
pour effectuer des modifications sur place.
Si vous souhaitez ajouter une ligne au début d'un fichier, vous devez ajouter \n
à la fin de la chaîne dans la meilleure solution ci-dessus.
La meilleure solution ajoutera la chaîne, mais avec la chaîne, cela n'ajoutera pas de ligne à la fin d'un fichier.
sed -i '1s/^/your text\n/' file
Utiliser le sous-shell :
echo "$(echo -n 'hello'; cat filename)" > filename
Malheureusement, la substitution de commande supprimera les nouvelles lignes à la fin du fichier. Pour les conserver on peut utiliser :
echo -n "hello" | cat - filename > /tmp/filename.tmp
mv /tmp/filename.tmp filename
Ni le regroupement ni la substitution de commande ne sont nécessaires.
sed
peut fonctionner sur une adresse :
$ sed -i '1s/^/<added text> /' file
Qu'est-ce que ce 1s
magique vous voyez sur chaque réponse ici? Adressage de ligne !.
Vous voulez ajouter <added text>
sur les 10 premières lignes ?
$ sed -i '1,10s/^/<added text> /' file
Ou vous pouvez utiliser Command Grouping
:
$ { echo -n '<added text> '; cat file; } >file.new
$ mv file{.new,}