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
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.
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.
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.
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).
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.