如何将多个文件的数据追加到单个文件中?

如何将多个文件的数据追加到单个文件中?

例如:我有01.txt02.txt文件,需要将这些文件的数据附加到新文件中new.txt

它应该根据01.txt后面的02.txt文件附加数据。

在此之前,我必须仅删除文件的第一行和最后一行(01.txt 02.txt),然后将它们附加到新文件中。

我们如何使用 UNIX 来实现这一点?

答案1

另一种方法:

for file in 01.txt 02.txt; do sed '1d;$d;' "$f"; done > output

如果您需要连接许多文件,这尤其有用:

for file in *.txt; do ...

您还可以使用 shell 扩展:

for file in 0{1,2}.txt; do ...

答案2

您可以使用 sed 删除第一行和最后一行:

sed -e '1d' -e '$d' file1 > output
sed -e '1d' -e '$d' file2 >> output
sed -e '1d' -e '$d' file3 >> output

答案3

打印除文件第一行之外的所有内容的简单方法是tail:

tail -n +2 01.txt

要打印文件中除最后一行以外的所有内容,请使用head:

head -n -1 01.txt

因此,要将所有这些放在一起并打印除第一行和最后一行之外的所有内容01.txt并将02.txt它们另存为03.txt,您可以使用子外壳将上述命令的输出合并到两个文件上:

(tail -n +2 01.txt | head -n -1; tail -n +2 02.txt | head -n -1) > new.txt

答案4

使用 GNU sed

sed -s '1d;$d' ./*.txt > output

注意:您要确保输出文件的名称与通配模式(*.txt上面)不匹配。否则,你必须这样写:

sed -sn '1d;$d;w output.txt' ./*.txt

(假设output.txt事先不存在)。

相关内容