bash - reemplazar - Cómo agregar la salida al final de un archivo de texto
sed linux (8)
Para append
un archivo usa >>
echo "hello world" >> read.txt cat read.txt echo "hello siva" >> read.txt cat read.txt
entonces la salida debe ser
hello world hello siva
Para overwrite
un archivo de uso >
echo "hello tom" > read.txt cat read.txt
entonces la salida es
hello tom
¿Cómo agrego la salida de un comando al final de un archivo de texto?
Por ejemplo, su archivo contiene:
1. mangesh@001:~$ cat output.txt
1
2
EOF
Si desea adjuntar al final del archivo, entonces ----> recuerde los espacios entre ''texto'' >> ''nombre de archivo''
2. mangesh@001:~$ echo somthing to append >> output.txt|cat output.txt
1
2
EOF
somthing to append
Y para sobrescribir los contenidos del archivo:
3. mangesh@001:~$ echo ''somthing new to write'' > output.tx|cat output.tx
somthing new to write
Puedes usar 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á que su texto se ha agregado varias veces al archivo textfile.txt.
Te sugiero que hagas dos cosas:
- Use
>>
en su script de shell para añadir contenidos a un archivo en particular. El nombre del archivo puede ser fijo o usando algún patrón. - Configurar un cronjob por hora para activar el script de shell
Use el command >> file_to_append_to
para adjuntar a un archivo.
Por ejemplo echo "Hello" >> testFile.txt
PRECAUCIÓN: si solo usa una sola, sobrescribirá completamente el contenido del archivo. Para asegurarse de que eso nunca suceda, puede agregar set -o noclobber
a su .bashrc
.
Esto garantiza que si escribe accidentalmente command > file_to_append_to
en un archivo existente, le avisará que el archivo ya existe. Ejemplo de mensaje de error: el file exists: testFile.txt
Por lo tanto, cuando usa >
solo le permitirá crear un nuevo archivo, no sobrescribir un archivo existente.
Use el operador >>
para añadir texto a un archivo.
para toda la pregunta:
cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
esto agregará 720 líneas (30 * 24) en o.txt y luego cambiará el nombre del archivo según la fecha actual.
Ejecutar lo anterior con el cron cada hora, o
while :
do
cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
sleep 3600
done
Utilice >>
lugar de >
al dirigir 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