我有一个包含某些函数、替换等的脚本。
但是在我的输出中,包含一些像
如何使用脚本将这个
在vim命令行中执行此命令:
但是在我的输出中,包含一些像
^@
这样的垃圾字符。如何使用脚本将这个
^@
替换成换行符?在vim命令行中执行此命令:
%s/<CTRL-2>//g
,但不能在脚本中执行。^@
这样的垃圾字符。^@
替换成换行符?%s/<CTRL-2>//g
,但不能在脚本中执行。^@
代表ASCII码中的0。
你可以使用以下方式:
sed 's/\x00/\n/g'
如果您想修复结果,您可以在vim中执行以下操作:
:%s/
然后按下:
<Ctrl-V>010
接下来你的命令看起来是这样的::%s/^@
然后你可以继续输入:
:%s/^@/\r/g
但我认为更好的解决方案是修复生成这些字符的代码。
如果您想在脚本中执行此操作,可以使用函数:nr2char()
,您可以执行nr2char(10)
以获取^@
。
^@
是从哪里来的,OP没有说。它可能来自外部命令(system()),也可能来自append()或者只是一个错误的子命令,例如:s/foo/\n/
。因此,我认为目前没有必要使用append/system
技巧。 - Kent:exec ...
并连接命令。 - Kent:h :exe
,有很多例子告诉你如何连接命令。 - Kentnr2char()
函数给你返回了^@
,你可以自己决定如何处理它。你可以调用substitute()
函数,也可以连接:s/../../
命令... 如果你写了:exec "nr2char(10)"
,那么你可能没有读懂或理解帮助文档。不管怎样,这个问题已经被标记为重复问题,请查看重复的问题和答案以获取帮助。 - Kent