我正在尝试使用ex脚本执行搜索/替换(以vim的ex实现为目标),如下所示:
ex -qc 'g/^[#][[:space:]]*$/d|x' file.txt
但是,当file.txt
已经不包含匹配的内容时,脚本会挂起;在没有-q
的情况下运行时,它还会显示以下错误:
E486: Pattern not found: ^[#][[:space:]]*$
如何构建此脚本以在失败时继续(或更好地中止并立即退出),而不是等待用户输入?
由于可移植性限制,我使用ex
支持sed -i
(就地编辑支持是sed的GNU扩展,并不适用于所有平台)。
答案 0 :(得分:3)
向vim发送一个单独的退出命令-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
在进行搜索/替换之前退出。