Как заменить все символы Юникода, кроме испанских? - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь удалить все символы Юникода из файла, кроме испанских символов.

Сопоставление разных гласных не представляет проблемы, и áéíóúÁÉÍÓÚ не заменяются с помощью следующего регулярного выражения (но все остальныеUnicode, кажется, заменяется):

perl -pe 's/[^áéíóúÁÉÍÓÚ[:ascii:]]//g;' filename

Но когда я добавляю перевернутый вопросительный знак ¿или восклицательный знак ¡к регулярному выражению, другие символы Unicode также сопоставляются и исключаются, что я бынравится быть удаленным:

perl -pe 's/[^áéíóúÁÉÍÓÚ¡¿[:ascii:]]//g;' filename не заменяет следующее (некоторые не пригодны для печати): ³ � �

Я что-то упускаю здесь очевидное?Я также открыт для других способов сделать это на терминале.

1 Ответ

0 голосов
/ 13 февраля 2019

У вас есть файл в кодировке UTF8 и вы работаете с символами Unicode, поэтому вам нужно передать определенный набор опций, чтобы Perl знал об этом.

Вы должны добавить -Mutf8, чтобы позволить Perl распознавать символы в кодировке UTF8, используемые непосредственно в вашем коде Perl.

Кроме того, вам нужно передать -CSD (эквивалентно -CIOED), чтобы ваш вход был декодирован, а выход перекодирован.Это значение зависит от кодировки, оно будет работать для кодировки UTF8.

perl -CSD -Mutf8 -pe 's/[^áéíóúñüÁÉÍÓÚÑÜ¡¿[:ascii:]]//g;' filename

Не забывайте о Ü и ü.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...