我有一个关于删除不可见字符的问题,只有在我们尝试使用“vi”命令查看文件时才能看到这些字符。我们有一个由Datastage Application生成的文件(Source是DB2 Table - > Target是.txt文件)。文件具有不同数据类型的数据。我遇到的问题只有3列,其数据类型定义为CHAR。
如果您在Textpad中打开文件,则会看到空格。但是当你通过vi命令在Unix上查看同一个文件时,我们会看到蓝色的^ @字符。我的文件是分隔符文件,分隔符为^ @ ^(我知道它有点听起来很奇怪)。
我试过了:
tr -d [:cntrl:] <Filename >NewFileName
- 仍然没有运气 - [删除分隔符但空格仍然存在] tr -s "^@" <Filename >NewFilename
- 仍然没有运气 - 我看到文件缩小了文件大小,但看不见的字符仍然存在。sed "s/^@/g/"
(和其他sed命令)<Filename
- 仍然没有运气。非常感谢任何建议。我已经研究过这个网站上的帖子,但我找不到一个。如果这很简单,请原谅我并分享您的想法。
答案 0 :(得分:7)
在 vi 中,NUL字符表示为^@
。摆脱它们:
使用 tr ,您应该能够删除NUL字符,如下所示:
tr -d '\000' < file-name > new-file-name
答案 1 :(得分:1)
使用vim打开文件,然后键入“:”(不带单引号)并将其粘贴:
%s /控制+ 2 // g(在常规PC上)
%s / control + shift + 2 // g(在Mac PC上)
当然,请用键盘上的键代替