文件转换和从Linux中的文件中删除特殊字符

时间:2013-10-14 14:02:41

标签: linux csv sed awk file-format

当我使用命令 cat -vet filename.csv 检查文件中的特殊字符时,我有一个.CSV文件,我用 ^ @ 得到非常冗长的行,所有记录中每个字母之间的 ^ I ^ @ ^ @ ^ M ^ 字符。我使用命令

检查了文件类型
file filename.csv

我得到输出为

  

filename.csv:Little-endian UTF-16 Unicode英文字符数据,   非常长的线,CRLF,CR线路终结器

。我有一个脚本从文件中删除控件M(^ M),其输出返回错误说::无法执行二进制文件

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

1 个答案:

答案 0 :(得分: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更准确地显示你逐字节的内容。