如何从.txt文件中删除<96>

时间:2018-08-15 00:19:11

标签: unicode vi

我收到了一个.txt文件,其中包含很多<96>,应该改为空格。

在vi中,我已经完成:

:%s/<96>//g

:%s/\<96>\//g 

但是它仍然在那里。我做了dos2unix,但仍然没有将其删除。是Unicode吗?是,如何删除?谢谢!

1 个答案:

答案 0 :(得分:2)

很有可能不是四个文字字符<96>。相反,它们可能是由0x96字节形成的单个字符,Vim将其渲染为<96>

您可以通过执行(从bash)来看到这一点:

printf '123\x96abc\x96def' > file.txt ; vi file.txt

您应该看到:

123<96>abc<96>def

要摆脱它们,您可以使用sed之类的东西(假设您的sed具有就地替换功能)

sed -i.save 's/\x96//g' file.txt

也可以vim本身中执行此操作,您只需要意识到可以使用 CTRL-V (或 CTRL-Q (如果已设置 CTRL-V 用于粘贴)。有关详细信息,请参见here,在此处措辞与缩短以确保答案是独立的:


  

如果您知道字符值,则可以输入可以当前编码显示的任何字符,如下所示(^V表示CTRL-V,如果使用CTRL-Q CTRL-V粘贴):

     
      
  • 十进制:^Vnnn000..255
  •   
  • 八音:^Vonnn000..377
  •   
  • 十六进制:^Vxnn00..ff
  •   
  • 十六进制,BMP Unicode:^Vunnnn0000..FFFF
  •   
  • 十六进制,任何Unicode:^VUnnnnnnnn00000000..7FFFFFFF
  •   
     

在所有情况下,如果键入的下一个字符不是给定基数中的数字,则可以忽略开头的零(当然,除了必须将零值输入为至少一个零之外)。

     

十六进制数字A-F(使用时)可以大写或小写,甚至可以混合使用。


因此,您想要的键序列(假设您希望将它们替换为空格)是:

:%s/<CTRL-V>x96/ /g