如何将 file1.txt 中的数据添加到 file2.txt?
问问题
7745 次
5 回答
21
以下命令将获取这两个文件并将它们合并为一个
cat file1.txt file2.txt > file3.txt; mv file3.txt file2.txt
于 2012-06-28T17:42:38.540 回答
7
sponge
您可以使用from在管道中执行此操作moreutils
:
cat file1.txt file2.txt | sponge file2.txt
于 2015-10-11T05:00:10.623 回答
6
使用 GNU sed 的另一种方法:
sed -i -e '1rfile1.txt' -e '1{h;d}' -e '2{x;G}' file2.txt
那是:
- 在第 1 行,附加文件的内容
file1.txt
- 在第 1 行,复制模式空间以保留空间,并删除模式空间
- 在第 2 行,交换保持空间和模式空间的内容,并将保持空间附加到模式空间
有点棘手的原因是r
命令追加内容,而第 0 行不可寻址,所以我们必须在第 1 行进行,将原行的内容移开,然后在该文件已附加。
于 2015-10-11T05:30:49.330 回答
1
如果它在您的系统上可用,那么moreutils 的海绵就是为此而设计的。这是一个例子:
cat file1.txt file2.txt | sponge file2.txt
如果您没有sponge
,则以下脚本使用临时文件执行相同的工作。它确保其他用户无法访问临时文件,并在最后清理它。
如果您的系统或脚本崩溃,您可能需要手动清理临时文件。在 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]
于 2018-08-15T13:11:00.803 回答
0
写入文件的方式就像1)。附加在文件末尾或 2). 重写那个文件。
如果你想把file1.txt中的内容放在file2.txt之前,恐怕你需要重写合并后的罚款。
于 2012-06-28T17:43:36.417 回答