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
あります。標準エラー()を取得して標準出力()に送信するようにシェルに指示します。1
2
2<&1
2
1