bzip2 descompactação, alterações e compactação de um arquivo de texto através do pipeline

1

Estou procurando uma maneira de descompactar um arquivo de texto comprimido do bzip2, alterar o conteúdo (adicionar novo conteúdo, classificação etc.) e compactá-lo novamente por meio de pipelines.

Eu já encontrei uma maneira de fazer isso, mas infelizmente eu tenho que usar outro arquivo como a saída recomprimida, já que o bzip2 não permite usar o mesmo arquivo neste caso.

Aqui está o meu código:

bzip2 -dc file.bz2 | sort | bzip2 -9 > file_2.bz2

Se eu usar o mesmo arquivo, recebo o seguinte erro:

bzip2: Compressed file ends unexpectedly;
perhaps it is corrupted?  *Possible* reason follows.
bzip2: Success
Input file = file.bz2, output file = (stdout)

It is possible that the compressed file(s) have become corrupted.
You can use the -tvv option to test integrity of such files.

You can use the 'bzip2recover' program to attempt to recover
data from undamaged sections of corrupted files.

Alguma solução sobre como posso resolver o problema?

Obrigado antecipadamente!

    
por linuxguy 04.12.2016 / 21:19

1 resposta

1

Any solutions how I can solve the issue?

mv file_2.bz2 file.bz2

Além disso, você pode usar bunzip2 em vez de bzip2 -d . A opção -c para bzip2 é desnecessária no seu caso de uso.

Escrever dados compactados no lugar é um negócio muito complicado, porque o fator de compactação varia através do arquivo. Então não vá lá.

No seu caso, sort está armazenando o arquivo inteiro de qualquer maneira. Portanto, deve ser fácil em princípio, mas na verdade não existe uma maneira fácil de fazer isso.

    
por 04.12.2016 / 22:17