复制文件的内容

复制文件的内容

我有一个要求,如果满足特定条件,我需要将文件的全部内容复制到同一个文件中。这是文件:

$ 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

Acat file.txt >> file.txt应该解决这个问题,>>将 stdout 的内容附加到指定文件的末尾

答案4

您可以尝试cat设置该文件,然后使用 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

相关内容