Linux下使用Vi替换/usr为usr时E488报错的解决方法
解决Vi替换时的E488错误:正确替换/usr为usr
兄弟,你碰到的这个E488: Trailing characters错误太典型了——问题出在你用了/作为替换命令的分隔符,但你要替换的目标字符串里也包含/,Vi会把第二个/当成命令的结束标记,后面的usr就成了多余的末尾字符,自然报错。
给你两种靠谱的解决方法:
方法1:更换分隔符(推荐,更直观)
Vi的替换命令支持用其他非特殊字符作为分隔符,比如#、@或者%,只要你的查找/替换字符串里不包含这个字符就行。比如用#的话,命令应该写成:
:%s#/usr#usr#g
拆解一下这个命令的各个部分:
%:表示对整个文件的所有行进行操作s:代表substitute(替换)操作#:自定义的分隔符(替代默认的/)/usr:要查找的目标字符串usr:替换后的内容g:全局替换(每一行里所有匹配的/usr都会被替换,不加g的话每一行只替换第一个匹配项)
方法2:转义分隔符
如果你坚持要用默认的/作为分隔符,那需要把查找字符串里的/用反斜杠\转义,告诉Vi这个/是字符串的一部分,不是命令的分隔符。命令如下:
:%s/\/usr/usr/g
这里的\/就是转义后的/,Vi会正确识别它是你要查找的内容,而不是命令的结束标记。
举个例子,假设你的文件里有一行export PATH=/usr/bin:$PATH,用上面任意一种命令执行后,都会变成export PATH=usr/bin:$PATH,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Muhammad
相关产品推荐
相关产品推荐

