У меня есть требование, при котором, если выполняется определенное условие, мне нужно дублировать все содержимое файла в тот же файл. Вот файл:
$ 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
Вы можете попробовать cat
ting файла, а затем использовать 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