Você pode fazer algo como:
cat in.txt > /tmp/tmp.txt && cat /tmp/tmp.txt >> in.txt
Eu tenho um requisito em que, se uma condição específica for atendida, eu 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
Você pode fazer algo como:
cat in.txt > /tmp/tmp.txt && cat /tmp/tmp.txt >> in.txt
Você pode armazenar o conteúdo do arquivo em variável (ele armazenará novas linhas) e, em seguida, acrescentar ao mesmo arquivo 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 se confunda quando ele mostra o conteúdo original do arquivo no stdout, ele tem o mesmo tempo duplicado 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
Um cat file.txt >> file.txt
deve fazer o truque, >>
acrescenta o conteúdo do stdout no final do arquivo especificado
Você pode tentar cat
do arquivo e, em seguida, 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
Tags text-processing