如何用sed替换未知字符<! - ? - >?

时间:2012-06-26 19:53:55

标签: linux tags sed mp3 fat32

今天我尝试将一些MP3文件从外部驱动器导入我的音乐文件夹,当时我注意到我的许多标签都被错误解释了。例如,带有字母(如á,ó,í,ö,ä等)的文件在矩形中显示为问号,如下所示:

我所做的只是从外部fat32驱动器到我自己的所有mp3文件,这是linux。有没有办法删除这个“特殊字符”,即带字母?我尝试失败的是 sed -e's / \?/ ae / g',如下所示:

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

我在阅读this链接时意识到,其中一些字母ä,ö,á用数字解释为\ 341。我认为这与FAT32到linux转码有关,但我完全不确定。有人知道如何用sed正确替换它们 - 欢迎其他解决方案;-)。谢谢你的建议!

2 个答案:

答案 0 :(得分:2)

我不确定这个反向逻辑的sed表达式是否可以作为你的sed问题的答案,但试一试:

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

其中包含 a-z的每个字符的一个或多个实例。 A-Z,0-9并将其删除。 (有时候,当你有一组有限的字符允许时,这是最简单的方法,但是未知数量的非允许字符。你可能需要在你想要允许的表达式中添加更多的字符。)

答案 1 :(得分:0)

标签是否在您的mp3文件中?如果是这样,我会避免在二进制文件上运行sed ......