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.
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 :
La opción "-i" de "sed -i", está ahí únicamente para escribir directamente en el archivo sin pasar por un archivo temporal.
--
Z'@+...che.
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
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 :
--
Z'@+...che.
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.
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.
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.
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!
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?
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.
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.
sed -i '1iSalut' essai.txt se convierte en: sed -i 1i'Salut' essai.txt
Sé que estoy haciendo un UP de varios años, pero a mí me ha servido,
Atentamente
¡Graciassss!
echo "mi texto" >> mi_archivo
eso es todo, beso
En tu caso, solo necesitas aprender a leer ;-(