我试图用一个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
在执行搜索/替换之前退出。