2014-02-14 51 views
0

我需要一个文本处理工具,可以在巨大文本文件(> 0.5 GB)上执行每行搜索和替换操作。可以是基于Windows或Linux的。 (我不知道在Linux中是否有像Streamreader/Writer这样的东西,但是我有一种感觉,那就是理想的解决方案。至此我尝试过的编辑器会将整个文件加载到momory中。)搜索和替换巨大的文本文件

奖金问题:一种工具,可以合并两个巨大的文本每行的基础上,用例如分隔标签

回答

1

听起来像你想sed。例如,

sed 's/foo/bar/' < big-input-file > big-output-file 

应的big-input-file每一行由bar取代的foo的第一次出现,把结果写入big-output-file

红利回答:我刚刚了解到paste,这似乎正是你想要的红利问题。

1

'sed'内置于Linux/Unix中,可用于Windows。我相信它一次只加载一个缓冲区(不是整个文件) - 你可以试试。

你会试图做什么与合并 - 以某种方式交错,而不是只是连接?

地址:interleave.pl

use strict; 
use warnings; 

my $B; 

open INA, $ARGV[0]; 
open INB, $ARGV[1]; 

while (<INA>) { 
    print $_; 
    $B = <INB>; 
    print $B; 
} 

close INA; 
close INB; 

运行:perl的interleave.pl的fileA FILEB> mergedFile

请注意,这是一个非常裸机效用。它不检查文件是否存在,并且它期望文件具有相同的行数。

+0

我想从两个单语语料库中创建一个双语(并行)语料库。 –

+0

所以这将是“A的一行,B的一行,A的一行,B的一行,......”?我不认为有内置任何东西可以做到这一点,但正如下面提到的,像Perl这样的东西可以在几行内完成。如果这就是你想要的,我们可以给你Perl代码来做到这一点。您只需确保安装了Perl。 –

+0

正是。我知道我必须学习这个PERL ...... 谢谢 –

0

我会用perl来做这个。一行一行地读取文件很容易,使用正则表达式有很好的搜索/重新使用空间,并且可以让你合并,并且你可以让你的perl脚本知道这两个文件。

+0

谢谢,我会学习PERL的一些时间..但现在不是:) –

+0

这是我学到的第一门语言,这是我对所有事情的答案;) – user1717259

+0

我有我需要编写的天气预报模型。你用Perl做的,我会在FORTRAN做的,我们会比较性能:) Perl可以很好地做很多事情,但它并不是最好的。 –