2010-07-17 29 views
8

Tengo un archivo de texto y, usando Bash, deseo insertar texto en una línea específica.insertando texto en una línea específica

texto para ser insertado, por ejemplo, es !comment: http://www.test.com en línea 5

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

convierte,

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

¿Estás tratando de hacerlo en lugar de una gran cantidad de archivos? ¿O una vez para un solo archivo? – MJB

Respuesta

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

i insertos antes de la línea actual, un añade después de la línea.

+0

¿qué significa el 4a? – m4l490n

4

puede usar awk, así

$ 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

Utilizar man 1 ed (que lee archivo en la memoria y lleva a cabo la edición de archivos en el lugar, sin copia de seguridad anterior):

# 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 
Cuestiones relacionadas