grep -i -A 5 -B 5 'db_pd.Clients' eightygigsfile.sql
它已经在相当强大的linux服务器上运行了一个小时,否则该服务器不会过载。grep可以替代吗?关于我的语法的任何可以改进的地方(例如,egrep,fgrep更好吗?)
该文件实际上位于与挂载共享到另一个服务器的目录中,但是实际的磁盘空间是本地的,因此应该没有什么区别?
grep占用了93%的CPU
我很好奇-80GB的文件大小是多少?我想认为,当文件变大时,可能会有更好的存储策略(例如旋转日志文件,或按层次结构分类到不同的文件和文件夹中)。同样,如果更改仅发生在文件的某些位置(例如末尾),则只需存储前一节中未更改的某些grep结果即可,而不是grep原始文件,而是grep存储的结果文件。
—
Sridhar Sarnobat
—
ccpizza
如果您的文件被索引或排序,则可以大大提高速度。根据定义,搜索每一行都是O(n),而可以通过将文件二等分来查找已排序的文件-此时,您需要花费一秒钟的时间来搜索80gb(因此,为什么80gb索引的数据库根本不需要时间进行简单的SELECT,而您的grep需要...好,只要它需要)。
—
查尔斯·达菲
-i
开关可能会减慢该过程,请尝试不使用-i
或使用LC_ALL=C grep ...
。另外,如果您只是在寻找固定的字符串,请使用grep -F
。