我有 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
.