用于文本搜索的最快编辑器/分页器

用于文本搜索的最快编辑器/分页器

我有一个 4.6GB 的文本文件需要搜索。

令人惊讶的是,grep 相当快,但我需要能够在搜索特定文本后滚动文件。

通常我选择的工具是 Less,但是对于这个来说它慢得像糖蜜。

哪种分页器和/或编辑器最适合处理 4.6GB 的文件?我的笔记本电脑总共有 16 GB 的 RAM,因此需要对 RAM 使用效率有所提高。

答案1

对于 1.5GB 的文件,vim 对我来说很管用。在我的笔记本电脑上,对不存在的字符串(即整个文件)进行文本搜索大约需要 10-15 秒。但请注意,vim 会将文件完全加载到内存中。对于拥有 16GB RAM 的你来说,这可能不是问题。

但我有这个~/.vimrc (遗憾的是不记得原始出处)

" changes to open really big files
let g:LargeFile = 1024 * 1024 * 10
augroup LargeFile 
 autocmd BufReadPre * let f=getfsize(expand("<afile>")) | if f > g:LargeFile || f == -2 | call LargeFile() | endif
augroup END

function LargeFile()
 " no syntax highlighting etc
 set eventignore+=FileType
 " save memory when other file is viewed
 setlocal bufhidden=unload
 " is read-only (write with :w new_filename)
 setlocal buftype=nowrite
 " no undo possible
 setlocal undolevels=-1
 " display message
 autocmd VimEnter *  echo "The file is larger than " . (g:LargeFile / 1024 / 1024) . " MB, so some options are changed (see .vimrc for details)."
endfunction

您可能还会对以下内容感兴趣另一个 SE 网站上有类似问题,因为可能还有更多技巧。例如,我看到有人建议使用专门用于大文件的 vim 插件 — 从未尝试过这个。

答案2

令人惊讶的是,grep 相当快,但我需要能够在搜索特定文本后滚动文件。

也许使用grep选项来显示找到的条目的上下文?

Context control:
-B, --before-context=NUM  print NUM lines of leading context
-A, --after-context=NUM   print NUM lines of trailing context
-C, --context=NUM         print NUM lines of output context

相关内容