【发布时间】:2016-03-21 07:17:48
【问题描述】:
我有一个包含某些功能/替换等的脚本。
但在我的输出中,包含一些像 ^@ 这样的垃圾。
如何用换行符替换这个^@?用脚本
此命令在 vim 命令行 %s/<CTRL-2>//g 中执行,但不是通过脚本执行
【问题讨论】:
-
如果你的脚本是 vim 脚本,那么你可以像 vim 命令行一样使用它
标签: regex vim regex-greedy
我有一个包含某些功能/替换等的脚本。
但在我的输出中,包含一些像 ^@ 这样的垃圾。
如何用换行符替换这个^@?用脚本
此命令在 vim 命令行 %s/<CTRL-2>//g 中执行,但不是通过脚本执行
【问题讨论】:
标签: regex vim regex-greedy
^@ 是 ASCII 0。
你可以使用:
sed 's/\x00/\n/g'
【讨论】:
如果你想修复结果,你可以在 vim 中这样做:
:%s/
然后按:
<Ctrl-V>010
之后你的命令看起来像::%s/^@
然后你可以继续输入:
:%s/^@/\r/g
但我认为更好的解决方案是修复生成这些字符的代码。
如果你想在脚本中做,有函数:nr2char()你可以做nr2char(10)得到^@
【讨论】:
append 或对系统事物的另一个调用。我在问题 cmets 中添加了一个指向我曾经遇到过的类似问题的链接。
^@ 来自哪里,OP 没有这么说。它可能来自外部命令 (system()) 或 append() 或只是一个错误的子命令:例如:s/foo/\n/。所以到目前为止我还没有看到append/system技巧的必要性。
:exec ... 并连接命令