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.txt
deve resolver o problema, >>
anexa o conteúdo de stdout no final do arquivo especificado
Responder4
Você pode tentar fazer cat
o 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