GNU/Linux >> Tutoriels Linux >  >> Linux

Comment insérer un texte au début d'un fichier ?

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,}

Linux
  1. Comment insérer du texte au début de chaque ligne dans Vim

  2. Comment remplacer une chaîne dans un ou plusieurs fichiers ?

  3. Afficher tout le fichier jusqu'au match ?

  4. Comment trouver des parenthèses sans correspondance dans un fichier texte ?

  5. Comment la commande Sed '1!g;h;$!d' inverse-t-elle le contenu d'un fichier ?

Comment ajouter du texte à la fin du fichier sous Linux

Comment ajouter du texte au début du fichier sous Linux

Comment ajouter la sortie à un fichier ?

Comment rediriger la sortie de system() vers un fichier ?

Comment puis-je ajouter une chaîne au début de chaque ligne dans un fichier ?

Comment insérer du texte à la 1ère ligne d'un fichier à l'aide de sed ?