2013-10-14 63 views
0

去除特殊字符我有一個​​.CSV文件,當我檢查使用命令cat -vet filename.csv文件中的特殊字符,我變得非常漫長的線條與^@^I^@^@^M^字符在每個字母之間的所有記錄中。我使用命令檢查的文件類型文件轉換和從文件在Linux中

file filename.csv 

我得到的輸出

filename.csv:小端UTF-16的Unicode英文字符數據, 很長的線,CRLF ,CR線路終端器

。我有一個腳本從文件中刪除控件M(^ M),其輸出返回錯誤消息::無法執行二進制文件

我知道^我代表一個選項卡。我有一個腳本來將^我轉換爲逗號分隔的文件,但任何人都可以幫助我格式化文件的錯誤,也可以^@

+0

'dos2unix'可以幫助你清除這個文件。 – fedorqui

+0

@fedorqui我嘗試了dos2unix命令作爲**'dos2unix filename.csv' **日誌顯示爲** dos2unix:將文件filename.csv轉換爲UNIX格式... **然後我嘗試使用相同的文件檢查文件命令作爲更早的** cat -vet filename.csv **,我仍然看到字符... – Dhruuv

回答

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更準確地顯示你在那裏逐字節。