linux - 如何连接两个文件并将结果写回原始文件之一

标签 linux bash pipe cat head

我试图从 somefile 中获取前 4 行,将它们与 someotherfile 的内容连接起来并将其输出到 somefile

head -4 /somefile | cat - /someotherfile > /somefile

当我这样做时,someotherfile 的内容最终出现在 somefile 中,但不是前 4 行。如果我输出到一个完全不同的文件,那么它会很好用。

显然,尝试写入我正在读取的同一个文件时存在问题。完成此任务的最简单方法是什么?

我正在尝试在 RedHat Enterprise 6、bash shell 上执行此操作。

最佳答案

您可以将 head 输出保存到临时变量,如下所示:

HEAD="$(head -4 some file)"
(echo "$HEAD"; cat someotherfile) >some file

或者您可以删除从第 5 行开始的所有行,并将另一个文件的内容附加到末尾:

sed -i '5,$d' somefile
cat someotherfile >>somefile

关于linux - 如何连接两个文件并将结果写回原始文件之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26641940/

相关文章:

python - 无法在 Windows 的 Linux 子系统中安装 Google-Earth-Engine-Api

linux - 熔丝文件系统指示不应打开文件

windows - 从使用 C# 制作仅限 Windows 的程序开始,为 Linux 和 Windows 开发有哪些步骤?

bash - 使用 Matlab 中的 shell 命令

linux - 对文件进行计数,如果计数大于给定限制,则删除剩余文件

c - 使用管道将输出从 'seq'重定向到 'awk'的输入

linux - 打开终端,运行命令,稍后返回 SAME 终端并执行另一个命令

c - 如何通过管道将 C 中定义的变量传递给 Gnuplot?

linux - 符号 -、< 和 > 是什么意思?

bash - 如何使用 shell 脚本知道运行代码的当前服务器名称?