19

我有一个从 EBCDIC 转换为 ASCII 的文件。曾经有新行的地方现在有字符显示为<85>(代表单个字符的符号,而不是它看起来的四个字符)并且整个文件在一行上。我想搜索它们并再次用新行替换它们,但我不知道如何。

我尝试将光标放在一个上并使用*它来搜索下一个事件,希望它可能会出现在我的/搜索历史记录中。那没有用,它只是搜索<85>字符后面的单词。

我搜索了谷歌,但没有看到任何明显的东西。

我的目标是建立一个搜索和替换字符串,如:

:%s/<85>/\n/g   

目前这只是给我:

E486: Pattern not found: <85>  
4

3 回答 3

26

我在 Google中找到了“ Find & Replace non-printable characters in vim ”。看起来你应该能够做到:

:%s/\%x85/\r/gc

省略c不提示进行替换,c首先尝试以确保它正在执行您希望它执行的操作。

在 Vim 中,键入:h \%x会提供更多详细信息。除了\%x,您还可以使用\%d\%o和表示十进制\%u\%U八进制、最多四个和最多八个十六进制字符。

于 2010-01-18T16:21:49.760 回答
2

对于特殊字符搜索,例如 win1252,对于<80>, <90>, <9d>... 的情况输入:

/\%u80, \/%u90, /\%u9d ...

从编辑。

同样对于八进制、十进制、十六进制,键入:/\%oYourCode, /\%dYourCode, /\%xYourCode

于 2020-04-23T16:36:25.117 回答
-4

试试这个::%s/<85>/^M/g

注意:同时按 Ctrl-V 然后按 M

或者如果您不介意使用其他工具,

awk '{gsub("<85>","\n")}1' file
于 2010-01-18T16:00:45.377 回答