我应该如何处理错误的ex脚本不等待用户输入



我试图用一个ex脚本(针对vim的ex实现)执行搜索/替换,如下:

ex -qc 'g/^[#][[:space:]]*$/d|x' file.txt

但是,当file.txt已经没有匹配的内容时,脚本挂起;在没有-q的情况下运行时,它会额外显示以下错误:

E486: Pattern not found: ^[#][[:space:]]*$

我如何构建这个脚本,以便在失败时继续(或者,更好的是,中止并立即退出),而不是等待用户输入?

由于可移植性的限制,我使用ex而不是sed -i(就地编辑支持是sed的GNU扩展,并非在所有平台上都可用)。

-c 'q'发送一个单独的退出命令,它将在搜索/替换(适用于我的vim版本7.3.315)后执行:

ex -c 'g/^[#][[:space:]]*$/d|x' -c 'q' file.txt

还要注意ex似乎按照它们在ARGV中出现的顺序执行命令,所以:

ex -c 'q' -c 'g/^[#][[:space:]]*$/d|x' file.txt

在执行搜索/替换之前退出。

最新更新