Я совершенно уверен, что об этом уже спрашивали и отвечали раньше, однако я не могу найти ответ на свой конкретный вариант использования.

У меня есть этот файл с акцентированными символами:

>  ~ cat file
ë
ê
Ý,text
Ò
É

Как мне преобразовать их в соответствующие буквы без акцента? Таким образом, результатом будет что-то вроде:

> ~ convert file out.txt
> ~ cat out.txt
e
e
Y,text
O
E

Обратите внимание, что сам файл содержит больше символов.

6
ilkkachu 29 Янв 2021 в 18:24
Мне они кажутся буквами с акцентом: en.wikipedia.org/wiki/Diacritic Конечно, если вам нужно изменить некоторые другие символы на буквы по какому-то правилу, тогда это другое.
 – 
ilkkachu
29 Янв 2021 в 18:27
2
Вы бы изменили ü на ue (немецкие эквиваленты) или просто u? Даже на английском языке, как бы вы хотели отобразить æ?
 – 
roaima
29 Янв 2021 в 19:11
Ваш первый пример - это не акцент, а диэрезис. Вы тоже хотите преобразовать их? Ваш вопрос в этом отношении противоречив.
 – 
Jörg W Mittag
30 Янв 2021 в 15:53

2 ответа

Лучший ответ

Вы можете попробовать iconv с опцией //TRANSLIT (транслитерация)

Бывший. данный

$ cat file
ë
ê
Ý,text
Ò
É

Тогда

$ iconv -t ASCII//TRANSLIT file
e
e
Y,text
O
E
16
steeldriver 29 Янв 2021 в 18:17
Не работает на моем маке. но работает на CentOS 8. Спасибо!
 – 
Kevin C
29 Янв 2021 в 18:27
Интересно, будет ли это работать на Mac, если вы добавите соответствующее значение -f для указания входной кодировки? Возможно, получено с помощью команды file во входном файле?
 – 
steeldriver
29 Янв 2021 в 18:32
1
У вас одинаковая iconv в обеих системах?
 – 
ctrl-alt-delor
29 Янв 2021 в 18:42
echo mówił, że | iconv -t ASCII//TRANSLIT => mowiiconv: illegal input sequence at position 5
 – 
Uncle Billy
30 Янв 2021 в 18:04
У меня работает нормально. (macOS 10.14.6, iconv (GNU libiconv 1.11), кодировка текста терминала = Unicode (UTF-8).)
 – 
gidds
30 Янв 2021 в 22:04

Пакет GNU recode очень полезен для преобразования между кодировками символов, и у него есть особый случай, который делает именно это с «плоской» кодировкой:

recode -f utf8..flat <textin.txt >flattext.out
6
chexum 29 Янв 2021 в 18:31