如何在Linux VI编辑器中替换特殊字符并解决正则匹配报错?
错误原因
你执行命令报错是因为{、[这类符号属于Vim正则表达式中的元字符,有特殊语法含义,未正确处理就直接用于匹配会触发正则语法错误。
正确操作方法
最简便的方式是把需要删除的字符放到正则字符类中匹配,字符类中大部分元字符无需单独转义,全局删除的命令如下:
:%s/[{}:[\]]//g
命令说明
:%s表示对当前文件所有行执行替换操作[{}:[\]]是正则匹配规则,匹配你需要删除的{、}、:、[、]五个字符,其中]加反斜杠转义是为了避免被识别为字符类的结束标记//表示将匹配到的内容替换为空,即直接删除- 末尾的
g表示全局匹配,同一行内多次匹配到的字符都会被删除
如果你需要逐个确认删除操作,避免误删,可以在命令末尾加c参数:
:%s/[{}:[\]]//gc
执行后每匹配到一个目标字符都会弹出确认提示,输入y确认删除,n跳过当前匹配即可。
内容的提问来源于stack exchange,提问作者Mandar Pimplapure
相关产品推荐
相关产品推荐

