【发布时间】:2018-12-29 04:12:36
【问题描述】:
问题
所以我有这个包含<0x00> 字符的大文本文件(见下图)。
如上图所示,我尝试使用正则表达式 \x00 删除这些字符。除此之外,我还尝试了\0 和\00,但没有成功。
但是,当我尝试在 Sublime Text 中替换这些字符时,弹出一个窗口显示这些 <0x00> 字符确实已找到(见下图),到目前为止一切顺利。
不幸的是,当我点击“替换”按钮时,字符没有被替换。
问题
我怎样才能摆脱这些<0x00> 字符?
附言值得一提的是,我无法对“0”进行搜索,因为此文本文件包含零,我想保留它。
进度更新#1
我已成功将 字符复制到“查找”搜索框(见下图)。
但是,即使我尝试用文本文件中的空字符替换此字符,也不会发生任何更改。
进度更新#2(解决方案)
如果没有@00 的帮助,我将找不到这个问题的答案,谢谢!
说明
该文件以 UTF-16 编码,但我认为它是 UTF-8。该文件是在 BOM UTF-8 中打开的,这正是我无法在 Sublime Text 3 中删除 <0x00> (NUL) 字符的原因。
解决方案
在“bash”或“终端”中执行以下命令:
sed -i 's/\x0//g' [textfile_name].txt
【问题讨论】:
-
这些字面意思是
<0x00>还是只是表示␀字符的标记? -
@00 我不确定我是否正确,但我确实认为它们是标记,因为它们是灰色的。但是,当我单击这样一个字符时,它会选择整个字符,而不是
<0x00>的“单个”字符。 -
听起来他们是 NULL 的。您的文件一定已损坏。不幸的是,如果
\0正则表达式似乎不起作用,您可能必须发挥创造力并使用外部程序来删除或从备份/源代码控制中提取 -
@00 我现在确定它们是 NULL,因为十六进制的 0x00 表示 NULL。但是,您说我的文件可能已损坏。我怎么能替换“常规”文本,例如将“英语”一词改为“西班牙语”,出于某种奇怪的原因,这是可能的,但替换
<0x00>不是吗? -
我已经设法找到/替换工作并将其写在答案中。再次尝试
\0的正则表达式
标签: replace sublimetext3