【问题标题】:File conversion and removing special characters from a file in LinuxLinux中文件转换和删除文件中的特殊字符
【发布时间】:2013-10-14 14:02:40
【问题描述】:

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

file filename.csv

我得到的输出为

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

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

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

【问题讨论】:

  • dos2unix可以帮你清除这个文件。
  • @fedorqui 我尝试使用 dos2unix 命令作为 dos2unix filename.csv 日志显示为 dos2unix: convert file filename.csv to UNIX format ... 和然后我尝试使用与之前 cat -vet filename.csv 相同的命令检查文件,但我仍然看到字符...

标签: linux csv sed awk file-format


【解决方案1】:

如果您的输入确实是 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 更准确地显示您所获得的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多