225 votes

Insérer une ligne à un numéro de ligne spécifique avec sed ou awk

J'ai un fichier de script que je dois modifier avec un autre script pour insérer un texte à la 8ème ligne.

Chaîne à insérer : Project_Name=sowstest , dans un fichier nommé start .

J'ai essayé d'utiliser awk et sed, mais ma commande est brouillée.

337voto

user unknown Points 15555
sed -i '8i8 This is Line 8' FILE

insère à la ligne 8

 8 This is Line 8

dans le fichier FICHIER

-i effectue la modification directement dans le fichier FILE, pas de sortie vers stdout, comme mentionné dans les commentaires de glenn jackman.

39voto

Mateusz Piotrowski Points 3815

OS X / macOS / FreeBSD sed

L' -i fonctionne différemment sur macOS sed que dans GNU sed .

Voici comment l'utiliser sur macOS / OS X :

 sed -i '' '8i\
8 This is Line 8' FILE

Voir man 1 sed pour plus d'informations.

36voto

glenn jackman Points 69748

Une réponse ed

 ed file << END
8i
Project_Name=sowstest
.
w
q
END

. sur sa propre ligne termine le mode d'entrée ; w écritures ; q quitte. GNU ed a une commande wq pour enregistrer et quitter, mais pas les anciens ed.

Lectures complémentaires : https://gnu.org/software/ed/manual/ed_manual.html

24voto

glenn jackman Points 69748

la réponse maladroite

 awk -v n=8 -v s="Project_Name=sowstest" 'NR == n {print s} {print}' file > file.new

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X