我有一个关于删除不可见字符的问题,这些字符只能在使用“vi”命令查看文件时才能看到。我们有一个由Datastage应用程序生成的文件(源是DB2表,目标是.txt文件)。文件包含具有不同数据类型的数据。我只有3个列的问题,它们的数据类型定义为CHAR。
如果您在Textpad中打开文件,您会看到空格。但是当您通过Unix的vi命令查看相同的文件时,我们会看到蓝色的^@字符。我的文件是一个分隔符文件,分隔符为^@^(我知道这听起来有点奇怪)。
我已经尝试过:
1. tr -d [:cntrl:] NewFileName — 仍然没有运气 — [分隔符被删除,但空格仍然存在]
2. tr -s "^@" NewFilename — 仍然没有运气 — 我看到文件大小减小,但是不可见字符仍然存在。
3. 尝试更改分隔符 — 但仍然看到相同的不可见字符。
4. 使用sed "s/^@/g/"(和其他sed命令) — 仍然没有运气。
非常感谢任何建议。我已经研究了这个网站上的帖子,但我找不到一个。如果这很简单,请原谅我并分享您的想法。
如果您在Textpad中打开文件,您会看到空格。但是当您通过Unix的vi命令查看相同的文件时,我们会看到蓝色的^@字符。我的文件是一个分隔符文件,分隔符为^@^(我知道这听起来有点奇怪)。
我已经尝试过:
1. tr -d [:cntrl:] NewFileName — 仍然没有运气 — [分隔符被删除,但空格仍然存在]
2. tr -s "^@" NewFilename — 仍然没有运气 — 我看到文件大小减小,但是不可见字符仍然存在。
3. 尝试更改分隔符 — 但仍然看到相同的不可见字符。
4. 使用sed "s/^@/g/"(和其他sed命令) — 仍然没有运气。
非常感谢任何建议。我已经研究了这个网站上的帖子,但我找不到一个。如果这很简单,请原谅我并分享您的想法。
tr
示例与“unix”标签有用。 - Thomas Dickey@
不能被视为 POSIX。大多数终端(不是全部)都支持 control-@ (^@) 作为空值。 - Thomas Dickey