web-dev-qa-db-ja.com

stdinからgzipにパイプすることは可能ですか?

コマンドs3cmd get s3://bucket/file.gz -を実行すると、画面にバイナリ出力が表示されます。これをs3cmd get s3://bucket/file.gz - | zcatでgzipにパイプしようとすると、gzip: stdin: not in gzip formatが返されます。

zcatを取得してstdinからの入力を選択するにはどうすればよいですか?

8
KalenGi

gzipおよびその補助コマンドは、デフォルトですべてSTDINから読み取られます。これは本当に簡単なテストでテストできます。

$ echo testing | gzip | zcat
testing

または、それがまぐれではなかったことを証明するためのよりエキゾチックな何か:

$ dd if=/dev/urandom of=bigfile bs=1024 count=102400
102400+0 records in
102400+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 6.42114 s, 16.3 MB/s

$ sha1sum bigfile 
25b4832d3e738e70721d86695ea7a767a3afb229  bigfile

$ cat bigfile | gzip | zcat | sha1sum 
25b4832d3e738e70721d86695ea7a767a3afb229  -

これは、あなたのs3cmd出力が何らかの形で汚れているか、不正な形式であることを示唆しています。ファイルにリダイレクトして(実際のファイル名を提供するのではなく)、headなどの出力を確認してください。または、適切にダウンロードして比較します。

11
Oli