Duplicar o conteúdo de um arquivo

Duplicar o conteúdo de um arquivo

Eu tenho um requisito em que, se uma condição específica for atendida, preciso duplicar todo o conteúdo de um arquivo no mesmo arquivo. Aqui está o arquivo:

$ cat in.txt
ip
10.22.1.34
10.22.1.35

Quando uma condição é atendida, por exemplo

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

o conteúdo do arquivo deve ser duplicado como abaixo:

ip
10.22.1.34
10.22.1.35
ip
10.22.1.34
10.22.1.35

Responder1

Você pode armazenar o conteúdo do arquivo em uma variável (ele armazenará novas linhas) e, em seguida, anexar ao mesmo arquivo a partir da variável. Apenas lembre-se de usar aspas em torno da variável.

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

Ou usando o comando "tee" você pode anexar diretamente ao mesmo arquivo, não fique confuso quando ele mostrar pela primeira vez o conteúdo original dos arquivos no stdout, ele ao mesmo tempo duplicou o conteúdo real do arquivo.

cat test.txt | tee -a test.txt

Se você não quiser que a saída do tee fique visível, é claro que você pode fazer isso:

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

Responder2

Você pode fazer algo como: cat in.txt > /tmp/tmp.txt && cat /tmp/tmp.txt >> in.txt

Responder3

A cat file.txt >> file.txtdeve resolver o problema, >>anexa o conteúdo de stdout no final do arquivo especificado

Responder4

Você pode tentar fazer cato ting do arquivo e usar sed para fazer um acréscimo. Então, 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

informação relacionada