0

当我使用命令检查文件中的特殊字符时,我有一个 .CSV 文件,我在所有记录中的每个字母之间都有cat -vet filename.csv很长的^@^I^@^@^M^字符。我使用命令检查了文件类型

file filename.csv

我得到的输出为

filename.csv:Little-endian UTF-16 Unicode 英文字符数据,行很长,带有 CRLF、CR 行终止符

. 我有一个脚本可以从文件中删除控件 M (^M),其输出返回给我一条错误消息:: cannot execute binary file

我知道 ^I 代表一个标签。我有一个脚本可以将 ^I 转换为逗号分隔的文件,但是任何人都可以帮助我针对错误和^@格式化文件。

4

1 回答 1

2

如果您的输入确实是 UTF-16,那么您应该使用iconv将文件从转换utf16为不那么麻烦的东西:

iconv -f utf16 -t utf8 < filename.csv > filename-utf8.csv

但我认为这file是错误的,因为那里的字节为零(显示为^@)。

你应该看看你的文件使用这样的东西来确定内容:

xxd filename.csv | less

或者

od -c filename.csv | less

如果你还没有xxd安装。这应该比cat您逐字节获得的内容更准确。

于 2013-10-14T14:15:57.297 回答