2014-02-14 48 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可以很好地做很多事情,但它並不是最好的。 –