The*_*age 5 scripting bash vim vi
我有一些文件需要应用一组烦人的重复 VIM 命令。它们是基本的 VIM 命令,只是为了删除我需要文件的进程不支持的一些行。
假设我有一个名为 postgresdb.out 的文件
在这个文件上我将
vim ./postgresdb.out
Run Code Online (Sandbox Code Playgroud)
然后从 VIM 内部我会
:%s/old/new/g
Run Code Online (Sandbox Code Playgroud)
进而
:g/deletethis/d
Run Code Online (Sandbox Code Playgroud)
其次是
:%s/\n\n//g
Run Code Online (Sandbox Code Playgroud)
然后保存文件并开始我的一天
我想知道是否可以编写一个 bash 脚本来执行此过程,而不是一直重新输入
自动编辑应该使用sed(1)(参见man sed)
您正在寻找的推荐是
sed -i -e s/old/new/g -e /deletethis/d -e '/^$/d' postgresdb.out
Run Code Online (Sandbox Code Playgroud)
我不确定您的期望是什么:%s/\n\n//d。
在哪里
-i意味着就地编辑(通常 sed 会输出版本做标准输出)-e...进行编辑/删除-e '/^$/d'应该删除空行