У меня есть файл, который содержит смесь английских и русских строк (по одному языку на строку). Русские строки кодируются вручную с использованием той или иной транслитной кодировки.

Мне нужно преобразовать русский транслит текста в кириллицу и сохранить английский текст в целости и сохранности.

Есть ли инструмент командной строки Linux, который поможет мне сделать это?

1 ответ1

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);

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .