Bash: insertar una línea en un archivo
Johny jon
-
Lemez -
Lemez -
Hola a todos,
desearía insertar una línea al principio de un archivo. He intentado:
echo hola >> miarchivo.txt
pero, por supuesto, añade hola al final del archivo, mientras que quiero que se añada al principio del archivo.
Si pudieran informarme sobre esto, se los agradecería :)
Gracias de antemano
Johny Jon
desearía insertar una línea al principio de un archivo. He intentado:
echo hola >> miarchivo.txt
pero, por supuesto, añade hola al final del archivo, mientras que quiero que se añada al principio del archivo.
Si pudieran informarme sobre esto, se los agradecería :)
Gracias de antemano
Johny Jon
11 respuestas
-
Hola
viejo tema pero en el top de respuestas de este tema
sed inserción de una línea al principio del archivo
como la respuesta no me ha parecido clara
me permito entonces algunas explicaciones
para toda eventualidad
explicación con el uso del comando
mágico SED
sed -i "1i\Añadir esta línea al principio del archivo\n" archivo.txt
sed = Stream EDitor
-i = aplicar directamente al archivo sin archivo temporal
Nota: -i.BAK = creación de un archivo de respaldo archivo.txt.BAK
" = permite el uso de caracteres de escape
y la interpretación de variables en la cadena.
Nota: el uso de ' (comilla simple) desactiva estas funciones.
1=número de línea antes de la cual se insertará el texto
\ = carácter de escape que protege el texto que se insertará
evita que el primer carácter del texto sea interpretado
como un comando/parámetro. -
Hola,
Puedes hacer esto con el filtro "sed", es muy simple y todo c*n :[jp@Mandrake tmpfs]$ cat essai.txt Hola a todos, aquí quiero insertar una línea al principio de un archivo. He intentado con: echo bonjour >> monfichier.txt pero, por supuesto, lo añade al final del archivo, mientras que me gustaría añadirlo al principio del archivo. Bueno, si pudieran informarme, les estaría muy agradecido :) Gracias de antemano Johny Jon [jp@Mandrake tmpfs]$ sed -i '1iSalut' essai.txt [jp@Mandrake tmpfs]$ cat essai.txt Salut Hola a todos, aquí quiero insertar una línea al principio de un archivo. He intentado con: echo bonjour >> monfichier.txt pero, por supuesto, lo añade al final del archivo, mientras que me gustaría añadirlo al principio del archivo. Bueno, si pudieran informarme, les estaría muy agradecido :) Gracias de antemano Johny Jon [jp@Mandrake tmpfs]$
En resumen, para insertar un texto antes de una línea se da su dirección, aquí la línea 1, seguida del parámetro "i" (para insertar).
La opción "-i" de "sed -i", está ahí únicamente para escribir directamente en el archivo sin pasar por un archivo temporal.
--
Z'@+...che.JP : Zen, my Nuggets ! ;-) El conocimiento solo es bueno si se comparte.
-
cp monfichier.txt temp0001.tmp
echo hola > monfichier.txt
cat temp0001.tmp >>monfichier.txt
rm temp0001.tmp
Aquí está la solución final.
Ciao
Guillaume -
sed 1i"mensaje" archivo
yo estoy jodido para poner un mensaje al principio de cada línea porque sed i"mensaje" archivo escribe el mensaje entre cada línea y no al principio de cada línea :(-
Hola,
Leer primero ;-))
Para tu caso, retomando tus palabras :[jp@MDK tmpfs]$ cat fich.txt es : sed 1i"mensaje" archivo estoy jodido para poner un mensaje al principio de cada línea porque sed i"mensaje" archivo escribe el mensaje entre cada línea y no al principio de cada línea :( [jp@MDK tmpfs]$ sed 's/.*/Mensaje &/' fich.txt Mensaje es : Mensaje sed 1i"mensaje" archivo Mensaje Mensaje estoy jodido para poner un mensaje al principio de cada línea Mensaje porque sed i"mensaje" archivo escribe el mensaje Mensaje entre cada línea Mensaje y no al principio de cada línea :( [jp@MDK tmpfs]$
;-))
--
Z'@+...che.JP : Tranquilo, mis Nuggets ! ;-) El conocimiento solo es valioso si se comparte.
-
-
lo siento, respondí en DOS (aunque querías en BASH)
bueno, olvidé Linux (hace 5 años que no lo toco)
pero en resumen
ren -> para renombrar o mover (mv??)
type -> cat
del -> eliminar un archivo (unln, erase???)
--
El error es humano pero un verdadero desastre
solo puede ser informático. -
de nada,
pero si puedes poner una solución funcional para bash, ¡eso podría ayudar a los demás después!
(es para el futuro)
y si todo funciona, no olvides cerrar el post
@+
--
El error es humano, pero un verdadero desastre
solo puede ser informático. -
Por favor, da el comando exacto que escribes.
También muestra la versión de "sed" (sed -V).
--
Z'@+...che.JP : Zen, mis Nuggets ! ;-) El conocimiento solo es bueno si se comparte.
-
Hola,
Para añadir una línea al principio del archivo:
cp lefichier.txt temp
cat - temp <<< "Swing la bacaisse dans le fond d'la boite à bois "> lefichier.txt
...
...
...
rm temp
Esta es la método que yo utilizo
¡Buena suerte! -
¿No existe un comando para insertar una línea al principio de un archivo sin pasar por un archivo temporal?
-
Bueno, aparentemente no. Se debe al sistema de archivos..
O entonces habría que jugar directamente con los i-nodos...
Si alguien tiene una solución de todos modos.- La respuesta es :
sed -i 1i"primera línea" archivo.txt
Y si quieres insertar en la octava línea :
sed -i 8i"primera línea" archivo.txt
La opción -i indica que se debe modificar el archivo.
Si no la pones, saldrá el resultado en la salida estándar (en la pantalla).
Sugeriría trabajar con sed sin la opción -i para preparar tu jugada y luego, cuando estés seguro de ti mismo... finalizas añadiendo la opción -i.
-
-
-
Hola
debes hacer esto en 4 pasos:
ren monfichier.txt temp0001.tmp echo hola >monfichier.txt type temp0001.tmp >>monfichier.txt del temp0001.tmp
si no entiendes el truco, pregúntame, te lo explico.
--
El error es humano pero un verdadero desastre
solo puede ser informático. -
De hecho, no existe un comando BASH para insertar una línea al principio. Sin embargo, para añadir al final sí.
Lo que hizo fue copiar el archivo. Creó otro y añadió tu línea. Luego puso al final todas las líneas de tu primer archivo.
¿Está claro, no? jaja
¡Hasta luego!
Guillaume