用文件 1 的内容覆盖文件 2 中的特定行

用文件 1 的内容覆盖文件 2 中的特定行

我有 2 个文件(文件 1 仅包含 1 行;文件 2 包含多行)。我想用文件 1 中唯一的一行替换文件 2 中的第 5 行。最好的方法是什么?

答案1

printf两者结合ed起来就成为了用于文件脚本编辑的优秀工具。

printf '%s\n' '5r file1' 5d w | ed file2

这用于ed编辑file2.该命令一次printf将其每个参数传送到一个管道中,并在每个命令之间使用换行符或换行符 ( )。ed\n

命令ed是:

  • 5r file1 - 插入内容file1 5号线
  • 5d - 删除第5行
  • w - 将更改写file2回磁盘。如果没有这个,退出时更改将被丢弃ed(即退出而不保存)。

答案2

vim /path/to/file1 -c '5' -c 'delete 1' -c '4' -c 'read /path/to/file2' -c 'w /path/to/file3' -c 'q!'

这将用于vim打开file1,转到第五行,删除它,插入file2该行原来所在的位置的内容,并将结果保存到新文件file3.

相关内容