2017-06-27 20 views
0

特殊なアポストロフィを含むウィンドウ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

あなたの唯一の問題が最初の文字である場合、あなたは 'sed '1 /////''を行うことができます。 –

+0

@mlwacosmos、[バイトオーダーマーク(BOM)](https://en.wikipedia.org/wiki/Byte_order_mark)が表示されています。それを削除するには複数の方法がありますが、多くは[この回答](https://stackoverflow.com/questions/1068650/using-awk-to-remove-the-byte-order-mark)で対応しています。 – randomir

答えて

0

、あなたが扱っている正確に何文字(複数可)を把握使用して(とパイプodに結果(この場合のようhead -1 <file>は十分なはずな単純なもので)問題の行を単離するためにありがとうございました目的の形式で文字を表示するための適切なフラグ):

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 

あなたが削除するには、お気に入りのコマンド(例えば、trsed)を使用することができますし、あなたが扱っている文字を知っていたら、キャラクターは言った。

+0

ヘッドを使用する-1 | od -c、見えない文字:357 273 277 – mlwacosmos

+0

コマンドを書き留めてもよろしいですか? – mlwacosmos

+0

あなたは既に 'tr'を使って文字を削除していますので、これらの文字を' tr'コマンドに追加してください。 'sed 's/\ x \ x \ x 'を' od -x'で出力される16進数で置き換えます。 – markp

関連する問題