Você poderia tentar implementar isso usando sed
, awk
e tal e tentar alcançá-lo pela linha de comando, mas eu acho que seria mais conveniente usar Perl e um script curto.
Você pode usar o módulo perl Lingua :: Translit para converter linhas e "adivinhar" se a linha estava em inglês ou não com Lingua :: Identifique .
Aqui está algum código. Eu não testei corretamente, mas deveria te dar algo para você escrever.
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);