擅长:python、mysql、java
<p><a href="https://stackoverflow.com/a/19677150/34088">As Radu Rădeanu said</a>,<code>sed</code>是替换文件中字符串的好工具,因为它可以在流上工作,而不是试图将整个文件加载到内存中。你知道吗</p>
<p>但是<code>sed</code>使用正则表达式,在您的情况下(1TB的输入数据),这可能太慢了。Unix工具通常可以处理任意大小的文件,它们的效率出奇的高,但是角落案例可能太多了。你知道吗</p>
<p>如果您需要优化流程,以下是一些要点:</p>
<ol>
<li><p>把大文件分成小文件。例如,如果这是一个日志文件,则每天创建一个文件,而不是将所有内容连接到一个大文件中。这样,您就可以在每个每日文件中剥离字符串<strong>一次。</p></li>
<li><p>编写一个小的C程序来搜索精确的字符串(而不是使用regexp)。然后可以使用<a href="http://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm" rel="nofollow noreferrer">Boyer-Moore</a>之类的优化来获得巨大的性能提升。您还应该考虑使用内存映射I/O。</p></li>
</ol>