Como posso editar um arquivo grande no lugar?

16

Eu tenho alguns arquivos de tamanho > 1 GB cada. Eu preciso remover alguns últimos bytes dos arquivos. Como eu posso fazer isso? Eu prefiro editar o arquivo para economizar espaço em disco.

Estou no HP-UX.

    
por Hemant 26.08.2010 / 11:42

5 respostas

10

Tente usar o hexedit Eu não experimentei o HP-UX, mas ele deve funcionar. Ele permite que você mude para um local em um arquivo e trunque. Tenho certeza de que ele não lê o arquivo inteiro, mas apenas procura o local apropriado para exibição.

O uso é bem simples depois que você o lança, as teclas de seta permitem que você se movimente. F1 dá ajuda. Ctrl-G move-se para um local no arquivo (dica: para mover para finalizar, use o tamanho do arquivo na linha inferior da exibição). Posicione o cursor no primeiro byte que deseja truncar e, em seguida, pressione Escape T quando confirmar que o truncamento foi concluído. Ctrl-x sai.

    
por 26.08.2010 / 17:43
14

Corte 2 kilobytes do final do arquivo:

truncate -s-2K file
    
por 26.08.2010 / 12:53
6

Você pode usar o dd, por exemplo:

dd if=yourfile of=outname bs=4k count=thefirstX4kb
    
por 26.08.2010 / 12:24
6

Use uma ferramenta que lhe dê acesso à chamada do sistema truncate . Você pode fazer isso apenas com ferramentas POSIX. Aviso, digitado em um navegador; seja especialmente cuidadoso, pois dd é ainda mais implacável em relação aos erros do comando usual do unix. 123456 é o número de bytes para manter.

dd if=/dev/null of=/file/to/truncate seek=1 bs=123456

Uma versão Perl é muito mais legível:

perl -e 'truncate "$ARGV[0]", 123456 or die $!' /file/to/truncate
    
por 27.08.2010 / 01:50
1

Você pode usar split ou ed , awk ou qualquer linguagem de programação.

    
por 26.08.2010 / 18:19