2010-07-17 5 views
8

J'ai un fichier texte, et en utilisant Bash je souhaite insérer du texte dans une ligne spécifique.insertion de texte dans une ligne spécifique

texte à insérer par exemple, est !comment: http://www.test.com en ligne 5

!aaaa 
!bbbb 
!cccc 
!dddd 
!eeee 
!ffff 

devient,

!aaaa 
!bbbb 
!cccc 
!dddd 
!comment: http://www.test.com 
!eeee 
!ffff 
+0

Est-ce que vous essayez de le faire en place pour un grand nombre de fichiers? Ou une fois pour un seul fichier? – MJB

Répondre

16
sed '4a\ 
!comment: http://www.test.com' file.txt > result.txt 

i inserts avant la ligne courante, un joint après la ligne.

+0

que signifie le 4a? – m4l490n

4

vous pouvez utiliser awk ainsi

$ awk 'NR==5{$0="!comment: http://www.test.com\n"$0}1' file 
!aaaa 
!bbbb 
!cccc 
!dddd 
!comment: http://www.test.com 
!eeee 
!ffff 
1

utilisant homme 1 ed (qui lit le fichier entier en mémoire et exécute en place l'édition de fichiers sans sauvegarde précédente):

# cf. http://wiki.bash-hackers.org/doku.php?id=howto:edit-ed 
line='!comment: http://www.test.com' 
#printf '%s\n' H '/!eeee/i' "$line" . wq | ed -s file 
printf '%s\n' H 5i "$line" . wq | ed -s file 
Questions connexes