Cómo agregar resultados al final de un archivo de texto
¿Cómo agrego el resultado de un comando al final de un archivo de texto?
Úselo >>
en lugar de >
cuando dirija la salida a un archivo:
your_command >> file_to_append_to
Si file_to_append_to
no existe, se creará.
Ejemplo:
$ echo "hello" > file
$ echo "world" >> file
$ cat file
hello
world
Para append
un uso de archivo >>
echo "hello world" >> read.txt
cat read.txt
echo "hello siva" >> read.txt
cat read.txt
entonces la salida debería ser
hello world # from 1st echo command
hello world # from 2nd echo command
hello siva
Para overwrite
un uso de archivo >
echo "hello tom" > read.txt
cat read.txt
entonces la salida es
hello tom
Puede utilizar el operador >>. Esto agregará datos de un comando al final de un archivo de texto.
Para probar esto intenta ejecutar:
echo "Hi this is a test" >> textfile.txt
Haga esto un par de veces y luego ejecute:
cat textfile.txt
Verás que tu texto se ha agregado varias veces al archivo textfile.txt.
Úselo command >> file_to_append_to
para agregar a un archivo.
Por ejemploecho "Hello" >> testFile.txt
PRECAUCIÓN: si solo utiliza uno, >
sobrescribirá el contenido del archivo. Para asegurarse de que eso nunca suceda, puede agregar set -o noclobber
a su archivo .bashrc
.
Esto garantiza que si escribe accidentalmente command > file_to_append_to
en un archivo existente, le avisará de que el archivo ya existe. Mensaje de error de muestra:file exists: testFile.txt
Por lo tanto, cuando lo use >
solo le permitirá crear un archivo nuevo, no sobrescribir un archivo existente.
Usar tee con la opción -a (--append) le permite agregar varios archivos a la vez y también usar sudo (muy útil al agregar archivos protegidos). Además de eso, es interesante si necesita utilizar otros shells además de bash, ya que no todos los shells admiten los operadores > y >>
echo "hello world" | sudo tee -a output.txt
Este hilo tiene buenas respuestas sobre tee.