删除Unix文件中的^ @字符

问题描述 投票:5回答:2

我有一个关于删除不可见字符的问题,只有在我们尝试使用“vi”命令查看文件时才能看到这些字符。我们有一个由Datastage Application生成的文件(Source是DB2 Table - > Target是.txt文件)。文件具有不同数据类型的数据。我只有3列的问题,其数据类型定义为CHAR。

如果您在Textpad中打开文件,则会看到空格。但是当您通过vi命令在Unix上查看同一文件时,我们会看到蓝色的^ @字符。我的文件是一个分隔符文件,分隔符为^ @ ^(我知道它有点听起来很奇怪)。

我试过了:

  1. tr -d [:cntrl:] <Filename >NewFileName - 仍然没有运气 - [分隔符被删除但空间仍然存在]
  2. tr -s "^@" <Filename >NewFilename - 仍然没有运气 - 我看到文件缩小了文件大小,但看不见的字符仍然存在。
  3. 尝试更改分隔符 - 但仍然看到相同的不可见字符。
  4. 使用sed "s/^@/g/"(和其他sed命令)<Filename - 仍然没有运气。

任何建议都非常感谢。我已经研究过这个网站上的帖子,但我找不到一个。如果这很简单,请原谅我并分享您的想法。

unix sed character tr invisible
2个回答
7
投票

在vi中,NUL字符表示为^@。摆脱它们:

TR

使用tr,您应该能够删除NUL字符,如下所示:

tr -d '\000' < file-name > new-file-name

1
投票

用vim打开文件,然后输入':',不带单引号并粘贴:

%s / control + 2 // g(在普通PC上)

%s / control + shift + 2 // g(在Mac PC上)

当然,用键盘上的键替换

© www.soinside.com 2019 - 2024. All rights reserved.