Editor / pager mais rápido para pesquisa de texto

1

Eu tenho um arquivo de texto de 4,6 GB pelo qual preciso pesquisar.

Surpreendentemente, o grep é bastante rápido, mas eu preciso ser capaz de rolar pelo arquivo depois de procurar por um texto específico.

Menos normalmente seria minha ferramenta de escolha, mas é lenta como melaço para isso.

Qual pager e / ou editor funcionaria melhor em um arquivo de 4.6GB? Meu laptop tem 16 GB de RAM total, então ele precisa ser um pouco eficiente com o uso de RAM.

    
por user1175849 16.09.2017 / 09:41

2 respostas

0

Com um arquivo de 1,5 GB, o vim funciona para mim. Uma pesquisa de texto por uma string não existente - isto é, pelo arquivo inteiro - levou ≈10-15 segundos. no meu laptop. Note, porém, que o vim carrega o arquivo completamente na memória. Provavelmente não é um problema para você com 16GB de RAM.

Mas eu tenho isso no meu ~/.vimrc (infelizmente não me lembro da fonte original) :

" 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

Você também pode estar interessado nos pergunta semelhante em outro site da SE , porque poderia haver mais truques. Por exemplo. Eu vejo lá alguém aconselha um plugin vim especificamente para arquivos grandes - nunca tentei um presente.

    
por Hi-Angel 16.09.2017 / 10:29
0
% bl0ck_qu0te%

Talvez use as opções grep para mostrar o contexto em torno da entrada encontrada?

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
    
por Alex'LP 16.09.2017 / 11:50