Tentei abrir um arquivo enorme (~ 2 GB) no VIM, mas engasgou. Na verdade, não preciso editar o arquivo, apenas pular de maneira eficiente.
Como posso trabalhar com arquivos muito grandes no VIM?
vim
large-files
hoju
fonte
fonte
:set binary
primeiro ...Respostas:
Eu tinha um arquivo de 12 GB para editar hoje. O plugin vim LargeFile não funcionou para mim. Ele ainda usou toda a minha memória e, em seguida, imprimiu uma mensagem de erro :-(. Não consegui usar hexedit para nenhum dos dois, pois ele não pode inserir nada, apenas substituir. Aqui está uma abordagem alternativa:
Você divide o arquivo, edita as partes e então o recombina. Você ainda precisa de duas vezes o espaço em disco.
Pesquise algo ao redor da linha que você gostaria de editar:
Extraia esse intervalo do arquivo. Digamos que as linhas que você deseja editar estejam nas linhas 4 e 5. Em seguida, faça:
-n
opção é necessária para suprimir o comportamento padrão do sed para imprimir tudo4,5p
imprime as linhas 4 e 55q
aborta o sed após a linha de processamento 5Edite
SMALLPART
usando seu editor favorito.Combine o arquivo:
HUGEFILE.new
agora será seu arquivo editado, você pode excluir o originalHUGEFILE
.fonte
Esta tem sido uma questão recorrente por muitos anos. (Os números estão sempre mudando, mas o conceito é o mesmo: como faço para visualizar ou editar arquivos maiores do que a memória?)
Obviamente,
more
ouless
são boas abordagens para meramente ler os arquivos ---less
até ofertasvi
como atalhos de teclado para rolar e pesquisar.Uma pesquisa do Freshmeat em "arquivos grandes" sugere que dois editores seriam particularmente adequados às suas necessidades.
Um seria: lfhex ... um grande editor hexadecimal de arquivo (que depende do Qt). Esse, obviamente, envolve o uso de uma GUI.
Outro parece ser adequado para uso em console: hed ... e afirma ter uma
vim
interface semelhante (incluindo umex
modo?).Tenho certeza de que já vi outros editores para Linux / UNIX que conseguiram folhear os arquivos sem carregar totalmente na memória. No entanto, não me lembro de nenhum de seus nomes. Estou tornando esta resposta uma entrada de "wiki" para incentivar outras pessoas a adicionar seus links a esses editores. (Sim, estou familiarizado com as maneiras de contornar o problema usando
split
ecat
; mas estou pensando em editores, especialmente editores de console / curses, que podem dispensar isso e nos poupar tempo / latências e sobrecarga de espaço em disco que tais abordagens acarretam) .fonte
Já que você não precisa realmente editar o arquivo:
view
(ouvim -R
) deve funcionar razoavelmente bem em arquivos grandes.more
ouless
fonte
view
(apenas experimentado e cronometrado). Concedido, isso não é exatamente instantâneo, mas funciona.Escrevi um pequeno script baseado na resposta de Florian que usa nano (meu editor favorito):
Use-o assim:
Nesse exemplo, o nano abrirá as linhas de 3 a 8, você pode editá-las e, ao salvar e sair, essas linhas no arquivo enorme serão substituídas automaticamente pelas linhas salvas.
fonte
Eu tive o mesmo problema, mas era um dump do mysql de 300 GB e eu queria me livrar do
DROP
e mudarCREATE TABLE
para,CREATE TABLE IF NOT EXISTS
então não queria executar duas invocações desed
. Escrevi este rápido script Ruby para enganar o arquivo com essas alterações:Invocado como
fonte
chmod +x mreplace.rb
primeiro, você também pode apenasruby mreplace.rb ..
Para one-liners enormes (imprime caracteres de
1
a99
):fonte
Já é tarde, mas se você quiser apenas navegar pelo arquivo sem editá-lo,
cat
pode fazer o trabalho também.ou alternativamente simples:
fonte
cat
o arquivo primeiro é insanamente estúpido, pois significa que o arquivo estaria totalmente na memória (portanto,less
pode procurar o arquivo) ou não pode ser procurado de forma alguma;cat
apenas fornece fluxo de saída estático.O emacs funciona muito bem com arquivos na casa dos 100 megabytes, usei-o em arquivos de log sem muitos problemas.
Mas geralmente, quando tenho algum tipo de tarefa de análise, acho que escrever um script perl é uma escolha melhor.
fonte
Tópico antigo. Mas mesmo assim (trocadilho :)).
funciona menos eficientemente se você não quiser editar e apenas dar uma olhada, o que é o caso de examinar arquivos de log enormes.
Pesquisar em menos funciona como vi
Melhor parte, ele está disponível por padrão na maioria das distros. Portanto, não será problema para o ambiente de produção também.
fonte
isso é antigo, mas use nano, vim ou gvim
fonte