Вы можете попытаться реализовать это, используя 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);