gzip files com cat e from pipe dão resultados diferentes

1

Por que isso dá essa saída (ambos os comandos devem fazer a mesma coisa) e como alguém pode fazê-los dar uma saída idêntica?

diff <(cat some_file | gzip -c - | base64) <(gzip -c some_file | base64)
1,2c1,2
< H4sIACSOZFUAA2XNsRHAMAgDwDqZRkIQ8P6L+c5xnIL2m2c5E6BdIQA5cHPTaGTqlI3ki2jSoWrk
< e1Tw0PNSMT4KdPKfJgNiJT++AAAA
---
> H4sICGcqSlUAA2Z0X2FkLnNob3J0AGXNsRHAMAgDwDqZRkIQ8P6L+c5xnIL2m2c5E6BdIQA5cHPT
> aGTqlI3ki2jSoWrke1Tw0PNSMT4KdPKfJgNiJT++AAAA

O conteúdo do arquivo é:

184170012   53000790
184170019   53000790
184170023   53000790
184170027   53000790
184170034   53001233
184170038   53001233
184170042   53000351
184170046   53000815
184170050   53000815
184170054   53000815

Há um caractere tab entre duas colunas e new line no final de cada linha.

    
por iggy 26.05.2015 / 17:20

1 resposta

2

O gzip está codificando o nome do arquivo de entrada em sua saída. Mesmo com a opção -c , ele faz isso. Você pode ver isso com gzip -c some_file | strings|head -1 . no entanto, ao ler stdin , o gzip não faz isso, pois não sabe o nome do arquivo. Você pode dizer ao gzip para omitir da saída o nome do arquivo e a data e hora com -n .

    
por 26.05.2015 / 17:28

Tags