我正在處理一個問題,我必須用大量文本文件中的某些行替換另一個(較小但仍然很大)的文本文件。Bash - 有效替換大文本文件中的小範圍行
假設file1有10,000行,file2 3,000行。我需要執行以下類型的操作:從file2中提取901-970行,並將其插入file1的8701-8770行,替換之前的內容。在我正在處理file1的問題中,有6100萬行,文件2 1800萬。我需要這個操作高效地完成,因爲它執行了多次 - 最終,file2的全部內容將在file1中的某處。
目前爲止我所得到的最佳解決方案是將兩個文件分成小文件,每個文件都有被複制和替換的塊的行數(上例中爲70)。事實證明,這比用頭部和尾部組合提取文件的一部分要高效得多,但仍然需要觸及未修改的file1部分。
我想知道是否有這樣的awk/grep/sed解決方案。提取file2的一部分不是問題,但我無法弄清楚如何在不加載整個文件的情況下替換file1的一行代碼塊。
謝謝!
你可以將文件分割成偶數行。例如:File1_1(1-900),File1_2(901_970),File1_3(971_)以及類似的File2。然後加入這些部分。 File1_1,File2_1,File1_3等。如果您的部分很大,則表示部分的數量可以管理。 – karakfa
如果您的字面意思是按行數進行處理,或者如果這只是向我們展示問題範圍的近似值,但您確實需要掃描特定的字符串以標記將發生替換的位置,則應明確說明。祝你好運 – shellter
@karafka這也是一種可能性,但由於我需要在整個文件中做幾次替換,所以我仍然有大量的節。謝謝。 – Albertini