我有一个文件,其中包含英语和俄语行(每行一种语言)。俄语行是使用其中一种或另一种语言手动编码的翻译编码。
我需要将俄语翻译文本转换为西里尔文,并保持英语文本完整。
是否有一个 Linux 命令行工具可以帮助我做到这一点?
答案1
您可以尝试使用等来实现这一点sed
,awk
并尝试通过命令行实现它,但我认为使用 Perl 和一个简短的脚本会更方便。
您可以使用 perl 模块语言::Translit转换行,并“猜测”该行是否是英文Lingua::识别。
这是一些代码。我没有对其进行适当的测试,但应该可以给你提供一些可以自己编写的代码。
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);