Дублировать содержимое файла

Дублировать содержимое файла

У меня есть требование, при котором, если выполняется определенное условие, мне нужно дублировать все содержимое файла в тот же файл. Вот файл:

$ cat in.txt
ip
10.22.1.34
10.22.1.35

Когда условие выполнено, например

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

содержимое файла должно быть продублировано, как показано ниже:

ip
10.22.1.34
10.22.1.35
ip
10.22.1.34
10.22.1.35

решение1

Вы можете сохранить содержимое файла в переменной (она будет хранить новые строки), а затем добавить в тот же файл из переменной. Просто не забудьте использовать кавычки вокруг переменной.

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

Или с помощью команды «tee» вы можете добавлять данные непосредственно в тот же файл. Не запутайтесь, когда сначала в стандартном выводе отобразится исходное содержимое файла: в то же время оно продублирует фактическое содержимое файла.

cat test.txt | tee -a test.txt

Если вы не хотите, чтобы вывод tee был виден, вы, конечно, можете сделать это:

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

решение2

Вы можете сделать что-то вроде: cat in.txt > /tmp/tmp.txt && cat /tmp/tmp.txt >> in.txt

решение3

A cat file.txt >> file.txtдолжен сделать свое дело, >>добавив содержимое stdout в конец указанного файла

решение4

Вы можете попробовать catting файла, а затем использовать sed для добавления. Так что-то вроде:

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

Связанный контент