我有多个文件,我想在每个文件中删除第 1 行到第 55 行,添加注释引导符(例如,//
)第 25 至 35 行,然后将更改保存到新文件中。
如何单独使用 Vim 或在 Bash 脚本的帮助下自动完成此操作?
尽管事实上使用ed
or sed
是一种常见的做法¹在这种情况下,有时使用 Vim 会方便得多。的确,
而不是写一个ed
-喜欢脚本有点盲目,它经常
更容易首先使用其中之一执行所需的操作
文件交互地 in Vim:
vim -w log.vim file1.txt
然后对其余文件重复此操作:
for f in file*.txt; do vim -s log.vim "$f"; done
对于您的示例用例,log.vim
文件可能会有
内容类似如下:
gg55dd:25,35s/^/\/\/ /
:w %_new
:q!
请注意,要使用新名称保存文件,您不应键入
直接使用,而是使用%
替换,如图所示
以上——否则后续文件的所有修改
将被保存到同一个文件中,每隔一段时间就会覆盖其内容
时间。或者,您可以预先复制文件,然后
然后就地编辑副本(只需通过以下方式保存每个副本
发出:w
不带参数的命令)。
这种方法的优点是您可以进行所有更改
交互式,确保您获得预期结果
在对其余文件进行编辑之前,至少对其中一个文件进行编辑
其中。
¹当然,您可以在ed
- 也像时尚:
for f in file*.txt; do vim -c '1,55d|25,35s/^/\/\/ /|w!%_new|q!' "$f"; done
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)