bzip2 -vからいくつかの情報をどのように抽出できますか?

bzip2 -vからいくつかの情報をどのように抽出できますか?

index.htmlというファイルがあり、それを圧縮して圧縮サイズを表示したいとします。わかりました。

bzip2 index.html -v

これで、すべてのデータビット/バイト、圧縮比、入力および出力圧縮が提供されます。私が数字(私の場合は20)が欲しいとしましょう。まあ、これは私が試したもので、他の場合はgzipで動作し、問題はありません。

だから私は通常awkこれを使います(しかしうまくいきません)。

bzip2 index.html -v | awk '{print $4}'

私も試しました

bzip2 index.html -v | cut -f4

上記の試みは-vが提供するものだけを生成し、私が望む情報だけを抽出しません。以下は、圧縮されたindex.htmlファイルの出力例です。

bzip2 index.html -v
index.html: 0.346:1, 22.00 bits/bytes, -175.00% saved, 20 in, 55 out

私は「20 in」、より具体的には20を入力しようとしています。

ベストアンサー1

bzip2この情報をstderrに印刷してください。これにより、標準出力を使用したり解凍したりすると、エラーメッセージが解凍されたデータとbzip2 -dc混在するのを防ぎますbzcat。 awkにstderrを送信する必要があります。

私のbzip2はこのフォーマットを生成します。

$ bzip2 index.html -v
  index.html:  1.444:1,  5.542 bits/byte, 30.73% saved, 179 in, 124 out.

stderrをstdoutにリダイレクトし、awkを使用して圧縮の程度を選択します。

$ bzip2 index.html -v 2>&1 | awk '{print $5}'
30.73%

シェルには標準入力、標準出力、標準エラーが 0あります。標準エラー()を取得して標準出力()に送信するようにシェルに指示します。122<&121

おすすめ記事