パイプラインでcatファイルとgzipファイルを使用すると、他の結果が表示されます。

パイプラインでcatファイルとgzipファイルを使用すると、他の結果が表示されます。

なぜそのような出力を提供し(両方のコマンドが同じことをする必要があるのか​​)、同じ出力を提供するにはどうすればよいですか?

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

ファイルの内容は次のとおりです。

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

tab2つの列の間と各行の末尾にnew line文字があります。

答え1

gzip は、入力ファイルのファイル名を出力にエンコードします。-cオプションがある場合でもこれを行います。を使用してこれを表示できますgzip -c some_file | strings|head -1。ただし、を読み取ると、stdingzipはファイル名を知らないため、これは行いません。出力からファイル名とタイムスタンプを省略するようにgzipに指示できます-n

関連情報