Agregar una línea con sed

Resuelto
wapette21 Mensajes publicados 68 Estado Miembro -  
 Eric -
Hola,

Te escribo porque estoy muy contento con mi último puesto.

Siempre tengo problemas con el comando sed.

Quiero añadir una línea en un archivo de texto, pero quiero poder insertarla después
de la línea que elija.

el comando que uso: sed '${num_ligne}a! $addtext' fichier.txt

pero sin éxito.

Gracias por tu respuesta.
Configuración: Windows XP Firefox 3.0

19 respuestas

bkcuf Mensajes publicados 1 Estado Miembro 3
 
hola,
sé que este post es antiguo pero para quienes aún buscan una solución, aquí les propongo lo siguiente.

Para insertar(i), añadir(a), intercambiar(c) una línea con el comando sed

ej.: añadir al final del archivo
sed -e '$a\texto que vous voulez ' fichier

ej.: añadir después de una línea "añadir este texto después de la línea" "2"
sed -e '2a\texto que vous voulez ' fichier

con la opción (i), posiciona tu texto en la línea 2 y desplaza el resto del texto.

Espero que esto ayude a alguien
+++
3
nadynadia Mensajes publicados 43 Estado Miembro
 
¡Hola!
Acabo de encontrar esto, ¡espero que encuentres la respuesta ahí dentro ^^!
que tengas un buen día
http://www.commentcamarche.net/forum/affich 1982836 commande sed
0
wapette21 Mensajes publicados 68 Estado Miembro 5
 
Gracias por tu respuesta pero la solución dada no funciona en mi servidor,
sed '4i\ toto' -> sed: command garbled: 4i\ toto

Leí el tutorial en el sitio pero los ejemplos no son muy claros, al menos para mí.

Gracias
0
nadynadia Mensajes publicados 43 Estado Miembro
 
toto, ¿no es un ejemplo?
0
wapette21 Mensajes publicados 68 Estado Miembro 5
 
Sí, Toto, es válido para un ejemplo, siempre tengo el problema sed: command garbled
estoy en Solaris 9.

Gracias
0
jipicy Mensajes publicados 40842 Fecha de registro   Estado Moderador Última intervención   4 898
 
Intenta así:
num=4; sed \"$num a\\ Mais je sens que ça va venir \" fichier.txt
;-))

--
JP - Criador de pingüinos -
Haz un gesto por el medioambiente, cierra tus ventanas y adopta un pingüino.
0
wapette21 Mensajes publicados 68 Estado Miembro 5
 
Siempre el mismo mensaje de error,

he intentado con i y idem, ¿quizás debería usar awk?

Gracias
0
lami20j Mensajes publicados 21506 Fecha de registro   Estado Moderador, Colaborador de seguridad Última intervención   3 571
 
Hola,

o con perl ;-) (no lo he probado)
perl -pi.orig -e 'print "Mais je sens que ça va venir\n" if $. == 3"' fichier.txt

--
106485010510997108
0
wapette21 Mensajes publicados 68 Estado Miembro 5
 
Entonces no conozco perla, pero bueno lo intenté y me dio:

String found where operator expected at -e line 1, at end of line
(Missing semicolon on previous line?)
Can't find string terminator '"' anywhere before EOF at -e line 1.

Gracias
0
lami20j Mensajes publicados 21506 Fecha de registro   Estado Moderador, Colaborador de seguridad Última intervención   3 571
 
Ups, he añadido una comilla de más ;-)
perl -pi.orig -e 'print "Pero siento que va a venir\n" if $. == 3' archivo.txt

--
106485010510997108
0
wapette21 Mensajes publicados 68 Estado Miembro 5
 
Funciona pero no es estable, te explico: cuando lo lanzo tal como me lo diste funciona, pero cuando lo adapto a mi script añadiendo variables, genera duplicados en mis archivos, especialmente al escribir en la última línea.

Mi uso: reemplazar variables.

perl -pi.tmp -e 'print "toto\n" if $. == 11' fichier.txt

fichier.txt

# Fichier de configuration contenant les jours non ouvrables de la société (Pentecôte,
# Fichier de configuration contenant les jours non ouvrables de la société (Pentecôte,
# Fichier de configuration contenant les jours non ouvrables de la société (Pentecôte,
# Fichier de configuration contenant les jours non ouvrables de la société (Pentecôte,
# jours fériés), les dates sont au format JJ/MM/AAAA.
# jours fériés), les dates sont au format JJ/MM/AAAA.
# jours fériés), les dates sont au format JJ/MM/AAAA.

Apres adaptation
# jours fériés), les dates sont au format JJ/MM/AAAA.
14/07/2006
14/07/2006

Mais je sens que ça va venir -> tester via la commande non adaptée

Merci
0
wapette21 Mensajes publicados 68 Estado Miembro 5
 
¿Alguien tendría otra idea o sintaxis para sed?

Gracias
0
jipicy Mensajes publicados 40842 Fecha de registro   Estado Moderador Última intervención   4 898
 
Essaye ça :
num=4; sed "$num s/.*/&\nMais je sens que ça va venir/" fichier.txt
;-))

--
JP - Éleveur de pingouins -
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.
0
wapette21 Mensajes publicados 68 Estado Miembro 5
 
Creo que no estamos lejos, el comando funciona pero no devuelve una nueva línea:

num=4; sed "$num s/.*/&\n Pero siento que va a venir/" archivo.txt

# Archivo de configuración que contiene los días no laborables de la empresa (Pentecostés,
# días festivos), las fechas están en formato DD/MM/AAAA.
14/07/2006
17/07/2006Pero siento que va a venir
18/07/2006
15/08/2006

si pudiéramos insertar un salto de línea sería perfecto.

Gracias
0
jipicy Mensajes publicados 40842 Fecha de registro   Estado Moderador Última intervención   4 898
 
Añade un "anti-slash":
sed "$num s/.*/&\\n Mais je sens que ça va venir/"
;-))

--
JP - Criador de pingüinos -
Haz un gesto por el medio ambiente, cierra tus ventanas y adopta un pingüino.
0
wapette21 Mensajes publicados 68 Estado Miembro 5
 
Hola,

He intentado de verdad pero no hay forma de que haga un salto de línea, también probé las '' "" sin éxito.

Gracias
0
wapette21 Mensajes publicados 68 Estado Miembro 5
 
Hola,

que mal; me he decidido por redirigir el texto en mi archivo, así que hago una inserción al final del archivo,

echo $text >> $mon_fichier

gracias a todos.
0
Eric
 
Me ayudó, ¡gracias!
0
jipicy Mensajes publicados 40842 Fecha de registro   Estado Moderador Última intervención   4 898
 
Hola, Recurro a ti porque estoy muy contento con mi último puesto. Siempre tengo dificultades con el comando sed. Quiero añadir una línea en un archivo de texto, pero quiero poder insertarla después de la línea de mi elección. jp@MDK:~/tmpfs ssh$ num=4; sed "$num a\Pero siento que eso va a venir" fichier.txt Hola, Recurro a ti porque estoy muy contento con mi último puesto. Siempre tengo dificultades con el comando sed. Pero siento que eso va a venir Quiero añadir una línea en un archivo de texto, pero quiero poder insertarla después de la línea de mi elección. jp@MDK:~/tmpfs ssh$;-))

--
JP - Criador de pingüinos -
Haz un gesto por el medio ambiente, cierra tus ventanas y adopta un pingüino.
-1