如何将file1.txt中的数据添加到file2.txt?
答案 0 :(得分:10)
以下命令将获取这两个文件并将它们合并为一个
cat file1.txt file2.txt > file3.txt; mv file3.txt file2.txt
答案 1 :(得分:6)
您可以使用sponge
中的moreutils
cat file1.txt file2.txt | sponge file2.txt
答案 2 :(得分:5)
使用GNU sed的另一种方式:
sed -i -e '1rfile1.txt' -e '1{h;d}' -e '2{x;G}' file2.txt
那是:
file1.txt
它有点棘手的原因是r
命令附加了内容,
并且第0行不可寻址,所以我们必须在第1行进行,
将原始行的内容移开,然后在附加文件内容后将其恢复。
答案 3 :(得分:0)
写文件的方式就像1)。附加在文件的末尾或2)。重写该文件。
如果你想将文件中的内容放在file2.txt之前,我恐怕你需要重写合并罚款。
答案 4 :(得分:0)
此脚本使用一个临时文件。确保临时文件不能被其他用户访问,并在最后清理它。
如果系统或脚本崩溃,则需要手动清理临时文件。在Bash 4.4.23和Debian 10(Buster)Gnu / Linux上进行了测试。
#!/bin/bash
#
# ----------------------------------------------------------------------------------------------------------------------
# usage [ from, to ]
# [ from, to ]
# ----------------------------------------------------------------------------------------------------------------------
# Purpose:
# Prepend the contents of file [from], to file [to], leaving the result in file [to].
# ----------------------------------------------------------------------------------------------------------------------
# check
[[ $# -ne 2 ]] && echo "[exit]: two filenames are required" >&2 && exit 1
# init
from="$1"
to="$2"
tmp_fn=$( mktemp -t TEMP_FILE_prepend.XXXXXXXX )
chmod 600 "$tmp_fn"
# prepend
cat "$from" "$to" > "$tmp_fn"
mv "$tmp_fn" "$to"
# cleanup
rm -f "$tmp_fn"
# [End]