如何在不打开文件的情况下在 vi 中应用正则表达式命令

Ste*_*cob 1 vi vim bash editor

我有一组需要相同编辑集的多个文件,我正在尝试创建一个 bash 脚本以在 vi 中编辑它们,但是我不知道如何在脚本中使用 vi 进行编辑?任何的意见都将会有帮助。

fna*_*ank 5

我强烈建议使用sedor awk,这两个程序都使用正则表达式来选择和处理文本。

但是,您也可以使用 vim 来做到这一点:

Vim 有一个ex模式(又名命令行版本)可以解决这个问题,并且更容易在脚本中使用。从这个答案中获取解决方案

您可以简单地在 bashscript 中包含以下内容:

ex $yourfile <<EOEX
  :%s/$string_to_replace/$string_to_replace_it_with/g
  :x
EOEX
Run Code Online (Sandbox Code Playgroud)

例如:

ex file.txt << EOEX
  :%s/hello/world/g
  :x
EOEX
Run Code Online (Sandbox Code Playgroud)

或者您可以使用该-c选项将ex命令传递给 vim。例如:

vim file.txt -c ':%s/hello/world/g' -c 'wq'
Run Code Online (Sandbox Code Playgroud)