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

标签 linux tags sed mp3 fat32

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

我所做的就是将所有 mp3 文件从外部 fat32 驱动器转移到我自己的驱动器上,即 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 正确替换它们 - 欢迎其他解决方案;-)。感谢您的建议!

最佳答案

我不确定这个反向逻辑 sed 表达式是否可以回答您的 sed 问题,但请尝试一下:

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

它采用 a-z 的每个字符的一个或多个实例。 A-Z、0-9 并将其删除。 (有时,当您允许的字符集有限,但不允许的字符数量未知时,这是最简单的方法。您可能必须向要允许的表达式添加更多字符。)

关于linux - 如何用 sed 替换未知字符 <?> ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11214978/

相关文章:

linux - tar 从存档内的文件夹中提取所有文件

php - 在 centos 6 上使用 yum install php-pear 时出现问题

linux - BASH:检查用户是否是 root

html - "img tag"内的 "a tag"的工具提示

php - var_dump 返回 bool(false) 和 @mysql_ping() 返回 true,为什么?

java - 帮助使用 Java 和 Regex 从 html 标签中提取文本

python - 从 Pandas 上传到 S3 时如何添加标签?

linux - 查找 "string1"并删除它和 "string2"之间的内容

linux - 在每行之间添加额外的换行符

bash - 匹配模式后分割多行