Editor de texto baseado em disco para editar arquivos maiores que a memória [closed]

1

Estou usando o Ubuntu e procurando um bom editor para editar um arquivo que seja > 4GB. Eu só preciso colocar o conteúdo no final e no começo do arquivo. Eu suponho que eu poderia usar algo como

cat "text to add" >> huge_file

Para anexar ao arquivo. Esse é o caminho a percorrer? E quanto ao pré-pagamento? Em geral, qual é a melhor rota se eu quisesse editar em algum lugar no meio?

Eu tentei o VIM e ele falhou miseravelmente. Eu assumo que o emacs e o nano seriam ainda piores. O que mais está lá? Suponho que para realizar o que estou procurando, o editor teria que ser projetado especificamente para isso, não mantendo a totalidade do conteúdo do arquivo na memória.

    
por Gordon 02.08.2010 / 22:32

5 respostas

4

Esta é uma resposta parcial, mas sim, se você está simplesmente anexando eu usaria:

cat extra.txt >> huge_file.txt

ou

echo "Single line to add" >> huge_file.txt

Para o prefending eu faria:

cat extra.txt huge_file.txt > huge_file_new.txt
    
por 02.08.2010 / 22:45
2

Se tudo o que você precisa é anexar, então >>huge_file é muito melhor do que qualquer editor pode fazer, porque ele não toca nos dados existentes. A inserção de dados em um arquivo requer a regravação de tudo após o ponto de inserção, por isso, será lento, mesmo com as ferramentas certas.

Com o vim, tente usar o plug-in LargeFile .

O Bvi é uma versão do vi que tem como alvo arquivos binários. Pode editar uma fatia de um arquivo (ou seja, da posição x para a posição y).

A página de comparação do editor da wikipedia tem uma coluna com suporte a arquivos grandes. A situação é muito sombria.

    
por 02.08.2010 / 23:27
1

O Ultraedit é o único editor que faz isso bem. Eu também preferiria um OSS. Um não existe. Estou particularmente surpreso que isso não seja uma capacidade do vi ... é um canivete suíço.

    
por 14.03.2011 / 13:38
0
O

UltraEdit é capaz de editar um arquivo sem carregá-lo na memória. Ainda não testei a versão Linux e nem testei um ficheiro > 4GB, pelo que não posso dar garantias, mas editei alguns ficheiros enormes (~ 1.5 GB) com a versão do Windows (e há muito tempo atrás, também).

    
por 02.08.2010 / 22:37
0

Só porque encontrei este via google à procura de algo semelhante, este é outro método que encontrei.

Situação: Você tem um arquivo de 4,0 GB e precisa editar o número da linha 120.

Solução: use a cabeça e a cauda para obter tudo, exceto a linha que você deseja editar.

# cat origfile.txt 
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
# head -n 5 origfile.txt >> newfile.txt
# echo "line 6" >> newfile.txt 
# tail -n +7 origfile.txt >> newfile.txt 
# cat newfile.txt 
 1
 2
 3
 4
 5
 line 6
 7
 8
 9
 10

Do meu teste, a cauda não carregará todo o arquivo na memória de uma só vez.

    
por 09.07.2011 / 04:25