【问题标题】:How to replace "^@" with "\r" [duplicate]如何用“\r”替换“^@”[重复]
【发布时间】:2016-03-21 07:17:48
【问题描述】:

我有一个包含某些功能/替换等的脚本。

但在我的输出中,包含一些像 ^@ 这样的垃圾。

如何用换行符替换这个^@?用脚本

此命令在 vim 命令行 %s/<CTRL-2>//g 中执行,但不是通过脚本执行

【问题讨论】:

  • 如果你的脚本是 vim 脚本,那么你可以像 vim 命令行一样使用它

标签: regex vim regex-greedy


【解决方案1】:

^@ 是 ASCII 0。

你可以使用:

sed 's/\x00/\n/g'

【讨论】:

  • E492:不是编辑器命令:sed 's/\x00/\n/g'
  • 您要求提供脚本。这不是 vi 命令!
  • 哦!有什么方法可以将它包含在我的 vimscript 中
  • 不知道。这不是同一个问题。
【解决方案2】:

在vim中输入命令

如果你想修复结果,你可以在 vim 中这样做:

:%s/

然后按:

<Ctrl-V>010

之后你的命令看起来像::%s/^@

然后你可以继续输入:

:%s/^@/\r/g

但我认为更好的解决方案是修复生成这些字符的代码。

在脚本中

如果你想在脚本中做,有函数:nr2char()你可以做nr2char(10)得到^@

【讨论】:

  • 可能是 append 或对系统事物的另一个调用。我在问题 cmets 中添加了一个指向我曾经遇到过的类似问题的链接。
  • @sidyll 我不知道^@ 来自哪里,OP 没有这么说。它可能来自外部命令 (system()) 或 append() 或只是一个错误的子命令:例如:s/foo/\n/。所以到目前为止我还没有看到append/system技巧的必要性。
  • 是可能的“%s/nr2char(10)/\r/g”吗?
  • @SamjithDasan 没有。但你可以做:exec ... 并连接命令
  • 我没有太多vim经验,你能举个例子吗
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-06
  • 2015-08-19
  • 1970-01-01
  • 2021-07-08
  • 2017-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多