如何在vi中用特殊字符替换字符串?

时间:2017-05-20 19:49:08

标签: solaris vi

如何在vi中用8!fifHsgx替换所有出现的字符串zUe * ES33Na?

我尝试使用:%s / zUe * ES33Na / 8!fifHsgx / g,但它说替代模式匹配失败。

我有一种感觉,因为我正在尝试搜索或替换“特殊”字符。

基本上有没有办法指示vi将字符解释为搜索字符而不是特殊字符?

这是用于编辑包含密码的文件。

尝试用AAAAAA之类的简单替换上面的第一个字符串时出现了同样的错误:

:%S / ZUE * ES33Na / AAAAAA /克

所以我感觉*导致错误。

我是否必须逃避*或者我可以以某种方式指示vi不要将其解释为包含特殊字符,例如,用引号括起来的东西?

2 个答案:

答案 0 :(得分:3)

使用\转义字符

 :%s/zUe\*ES33Na/8!fifHsgx/g

答案 1 :(得分:2)

是的,它是*

在Vi中搜索时,您正在搜索正则表达式。这通常看起来像一个常规字符串(%s/asdf/hjkl),但它是一个恰好只匹配普通文本的正则表达式。如果您输入的特殊字符用于表示*.之类的字符,则会相应地执行此操作。

你需要做的是用反斜杠将其转义并将其转换为普通字符。

%s/zUe\*ES33Na/8!fifHsgx/g

请注意,只有第一部分受到正则表达式字符的影响,因为用正则表达式替换某些内容是没有意义的。第二部分将所有内容视为普通角色。