我想将包含特殊撇号的Windows UTF8文件转换为unix ISO-8859-1文件。我就是这样做的:
# -- unix file
tr -d '\015' < my_utf8_file.xml > t_my_utf8_file.xml
# -- get rid of special apostrophe
sed "s/’/'/g" t_my_utf8_file.xml > temp_my_utf8_file.xml
# -- change the xml header
sed "s/UTF-8/ISO-8859-1/g" temp_my_utf8_file.xml > my_utf8_file_temp.xml
# -- the actual charecter set conversion
iconv -c -f UTF-8 -t ISO8859-1 my_utf8_file_temp.xml > my_file.xml
一切都很好,但我的一个文件中有一件事。看起来文件的开头最初有一个不可见的字符。当我在Notepadd ++中打开my_file.xml时,我在文件的开头看到一个SUB。在Unix VI中,我看到^ Z。
我应该在unix脚本中添加什么以及在哪里删除这些类型的字符。
谢谢
答案 0 :(得分:0)
要准确找出您正在处理的字符,请隔离相关的行(在这种情况下,像head -1 <file>
之类的简单内容就足够了)并将结果传递给od
(使用用于显示所需格式的字符的适当标志):
head -1 <file> | od -c # view as character
head -1 <file> | od -d # view as decimal
head -1 <file> | od -o # view as octal
head -1 <file> | od -x # view as hex
一旦你知道你正在处理的角色,你可以使用你最喜欢的命令(例如,tr
,sed
)删除所述角色。