Duplicar el contenido de un archivo

Duplicar el contenido de un archivo

Tengo un requisito en el que, si se cumple una condición específica, necesito duplicar todo el contenido de un archivo en el mismo archivo. Aquí está el archivo:

$ cat in.txt
ip
10.22.1.34
10.22.1.35

Cuando se cumple una condición, por ejemplo.

if [[ d=1 ]]; then
copy the file content
fi

el contenido del archivo debe duplicarse como se muestra a continuación:

ip
10.22.1.34
10.22.1.35
ip
10.22.1.34
10.22.1.35

Respuesta1

Puede almacenar el contenido del archivo en una variable (almacenará nuevas líneas) y luego agregarlo al mismo archivo desde la variable. Solo recuerda usar comillas alrededor de la variable.

x=$(cat test.txt) && echo "$x" >> test.txt

O usando el comando "tee" puede agregar directamente al mismo archivo, no se confunda cuando muestra por primera vez el contenido original de los archivos en la salida estándar, al mismo tiempo ha duplicado el contenido real del archivo.

cat test.txt | tee -a test.txt

Si no desea que la salida de tee sea visible, por supuesto puede hacer esto:

    cat test.txt | tee -a test.txt > /dev/null

Respuesta2

Puedes hacer algo como: cat in.txt > /tmp/tmp.txt && cat /tmp/tmp.txt >> in.txt

Respuesta3

A cat file.txt >> file.txtdebería funcionar: >>agrega el contenido de stdout al final del archivo especificado

Respuesta4

Puede intentar cateditar el archivo y luego usar sed para agregarlo. Entonces algo como:

cat in.txt
ip
10.22.1.34
10.22.1.35

d=1
if [ ${d} -eq 1 ]; then
    cat in.txt | while read LINE; do sed -i '$a\'"${LINE}" in.txt; done
fi

cat in.txt
ip
10.22.1.34
10.22.1.35
ip
10.22.1.34
10.22.1.35

información relacionada