我在两个文件(一个是德语,另一个是英语)中有一个平行语料库,其中句子是对齐的。这意味着在一个文件的每一行中,另一个文件中的同一行包含它的翻译。
然而,在德语语料库中,一些句子仍然是英文的(或者它们只是奇怪的标签)例如:
file.en, line 500: The house is small file.de, line 500: Das Haus ist klein
file.en, line 501: The cat is big file.de, line 501: The cat is big
file.en, line 444: EMEA/CVMP/424/01 file.de, line 444: EMEA/CVMP/424/01
因为我需要保留句子的顺序,所以我想检测此类重复项 (string1 == string2
) 并将它们从两个文件中删除,以便句子之后仍然对齐。
我见过一些使用 awk
的解决方案,但没有一个符合我的问题。
有什么想法吗?
注意:文件有几百万行。
最佳答案
您可以使用一个小的 perl 脚本,它不需要在内存中存储任何内容,只需要存储直接行。
只是逐行比较两个文件,只打印不同的文件。
use warnings;
use strict;
open(my $fh1,'<','file');
open(my $fh2,'<','file2');
open(my $fh3,'>','outfile');
open(my $fh4,'>','outfile2');
while (my $line = <$fh1>){
my $line2 = <$fh2> ;
if($line ne $line2){
print $fh3 $line;
print $fh4 $line2;
}
}
用作
perl script.pl
关于linux - 删除两个句子对齐文件中的重复行,Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38245552/