Bash 脚本 VIM 命令

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 脚本来执行此过程,而不是一直重新输入

Arc*_*mar 2

自动编辑应该使用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'应该删除空行