我有一个关于删除不可见字符的问题,只有在我们尝试使用“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
- 仍然没有运气。任何建议都非常感谢。我已经研究过这个网站上的帖子,但我找不到一个。如果这很简单,请原谅我并分享您的想法。
在vi中,NUL字符表示为^@
。摆脱它们:
使用tr,您应该能够删除NUL字符,如下所示:
tr -d '\000' < file-name > new-file-name
用vim打开文件,然后输入':',不带单引号并粘贴:
%s / control + 2 // g(在普通PC上)
%s / control + shift + 2 // g(在Mac PC上)
当然,用键盘上的键替换