2012-06-26 28 views
1

今天我試圖從外部驅動器導入一些MP3文件到我的音樂文件夾,當我注意到我的許多標籤出現錯誤的解釋。例如,帶有諸如á,ó,í,ö,ä等字母的文件在矩形內顯示爲問號,如下所示:我如何用sed替換未知字符<?>?

我所做的全部都是mv所有來自外部fat32的mp3文件驅動到我自己的,這是Linux。有沒有辦法去除這個「特殊字符」,即用一個字母?我嘗試失敗了的sed -e 'S/\/AE/g的?'這樣的:

id3v2 -l song.mp3 | grep Artist | cut -d ':' -f 2 | sed -e 's/\?/ae/g' 

閱讀this鏈接時,我意識到,這其中的一些字母爲A的,O,A是用\ 341等數字解釋。我認爲這與FAT32到linux轉碼有關,但我不確定。有人知道如何用sed正確替換它們 - 其他解決方案歡迎;-)。感謝您的建議!

+1

也許你會對'iconv'感興趣。 –

+0

這是文件*的名稱或文件*中的*標記的問題嗎?我回答假設你是指前者,但實際上你可能是指後者。 – zwol

+0

我可以在上面的字符串中整合iconv(替換sed)嗎? @Zack轉錄錯誤指的是我的mp3_文件中的_tag。 – JFP

回答

2

我不能確定的sed表達這種反向邏輯將作爲答案工作,你的sed的問題,但不妨一試:

sed -re 's/[^a-zA-Z0-9]+//g'

這需要每一個字符的一個或多個實例,多數民衆贊成不是 az。 A-Z,0-9並將其刪除。 (有時,當你有一組有限的字符允許時,這是最簡單的方法,但是未知的字符數量是未知的,你可能需要在表達式中添加更多的字符,以便允許。)

+0

謝謝,我只是試了一下,但沒有成功。發生的事情是空間和其他角色消失,但未知的角色依然存在。 – JFP

0

標籤在你的mp3文件中?如果是這樣,我會避免在二進制文件上運行sed ...

+0

但爲什麼?你會建議使用什麼而不是sed? – JFP