将数据从一个文件前置到另一个文件

Suk*_*esh 9 linux shell file prepend

如何将file1.txt中的数据添加到file2.txt?

Jus*_*ood 13

以下命令将获取这两个文件并将它们合并为一个文件

cat file1.txt file2.txt > file3.txt; mv file3.txt file2.txt
Run Code Online (Sandbox Code Playgroud)

  • 打得好,没有想到它是写给自己的。然后是一个中间文件。然后是mv。调整答案以适应 (2认同)
  • 请注意看到此答案的人:请勿尝试在“cat file1.txt file2.txt > file2.txt”等命令中执行此操作。它将无限循环运行。在按下 ctrl+C 之前我有大约 10 秒的时间。13 行文件和 7 行文件中的 8817181 行。回答者回复的原始评论已被删除,因此尚不清楚这是一个问题。 (2认同)

Sto*_*ica 6

您可以使用管道做到这一点spongemoreutils:

cat file1.txt file2.txt | sponge file2.txt
Run Code Online (Sandbox Code Playgroud)


Sto*_*ica 5

使用GNU sed的另一种方式:

sed -i -e '1rfile1.txt' -e '1{h;d}' -e '2{x;G}' file2.txt
Run Code Online (Sandbox Code Playgroud)

那是:

  • 在第1行上,附加文件内容 file1.txt
  • 在第1行上,复制模式空间以保留空间,并删除模式空间
  • 在第2行上,交换保持空间和模式空间的内容,并将保持空间追加到模式空间

之所以有点棘手,是因为该r命令附加了内容,并且第0行不可寻址,因此我们必须在第1行进行操作,将原始行的内容移开,然后将其返回到文件被追加。