Duplicar o conteúdo de um arquivo

1

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
    
por Alex Raj Kaliamoorthy 19.05.2016 / 18:42

4 respostas

1

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

    
por 19.05.2016 / 18:50
1

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
    
por 19.05.2016 / 22:38
0

Um cat file.txt >> file.txt deve fazer o truque, >> acrescenta o conteúdo do stdout no final do arquivo especificado

    
por 19.05.2016 / 19:41
0

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
    
por 19.05.2016 / 19:41