Умное преобразование кодировки
У меня есть файл, который содержит смесь английских и русских строк (по одному языку в строке). Русские строки кодируются вручную с использованием той или иной транслитной кодировки.
Мне нужно преобразовать русский транслит текста в кириллицу и сохранить английский текст в целости и сохранности.
Есть ли инструмент командной строки Linux, который поможет мне сделать это?
1 ответ
Вы можете попытаться реализовать это, используя sed
, awk
и так и попытаться добиться этого с помощью командной строки, но я думаю, что было бы удобнее использовать Perl короткий сценарий.
Вы можете использовать модуль Perl Lingua::Translit для преобразования строк и "угадать", была ли строка на английском или нет с помощью Lingua:: Identify.
Вот код Я не проверил это должным образом, но должен дать вам что-нибудь написать самостоятельно.
use Lingua::Translit;
use Lingua::Identify qw(langof set_active_languages);
set_active_languages(qw/ru en/);
my $tr = new Lingua::Translit("ISO 9");
open OUTFILE, ">output.txt" or die $!;
open INFILE, "input.txt" or die $!;
while (my $line = <INFILE>) {
my $a = langof($line);
if ($a eq "ru") {
my $trline = $tr->translit_reverse($line);
print OUTFILE $trline;
} else {
print OUTFILE $line;
}
}
close(INFILE);
close(OUTFILE);