Как заменить неизвестные символы <?> На sed?
Сегодня я попытался импортировать некоторые MP3-файлы с внешнего диска в свою музыкальную папку, когда заметил, что многие мои теги интерпретируются неправильно. Например, файлы с буквами, такими как á,ó,í,ö,ä и т. Д., Отображаются в виде знака вопроса в прямоугольнике, например, так:
Все, что я сделал, это mv все mp3-файлы с внешнего диска FAT32 на мой собственный, который является Linux. Есть ли способ удалить этот "специальный символ", то есть с помощью буквы? То, что я неудачно попробовал, было sed -e 's / \? / Ae / g' вот так:
id3v2 -l song.mp3 | grep Artist | cut -d ':' -f 2 | sed -e 's/\?/ae/g'
Когда я прочитал эту ссылку, я понял, что некоторые из этих букв, как ä, ö, á, интерпретируются такими цифрами, как \ 341. Я думаю, что это как-то связано с перекодировкой FAT32 в linux, но я не совсем уверен. Кто-то знает, как правильно заменить их на sed - другие решения приветствуются;-). Спасибо за ваши предложения!
2 ответа
Я не уверен, будет ли это выражение sed обратной логики работать как ответ на ваш вопрос sed, но попробуйте:
sed -re 's/[^a-zA-Z0-9]+//g'
Который принимает один или несколько экземпляров каждого символа, а не az. AZ 0-9 и удаляет его. (Иногда это самый простой способ сделать что-то, когда у вас есть ограниченный набор разрешенных символов, но неизвестное количество недопустимых символов. Возможно, вам придется добавить больше символов в выражение, которое вы хотите разрешить.)
Теги есть в ваших mp3 файлах? Если это так, я бы не использовал sed для двоичных файлов...