numfmt
リモートファイルをContent-Length
バイトからIEC形式に変換するために使用します。21M
$ curl -sI http://jruby.org.s3.amazonaws.com/downloads/1.7.12/jruby-bin-1.7.12.tar.gz|grep Length|cut -d' ' -f2|numfmt --from=auto --to=iec
'numfmt: invalid suffix in input: '21981488
numfmtが間違ったサフィックスについて文句を言う理由を混乱させます。コマンドを分割してコマンドの出力を確認cut
し、値を手動でエコーすると、期待numfmt
どおりに機能します。
$ curl -sI http://jruby.org.s3.amazonaws.com/downloads/1.7.12/jruby-bin-1.7.12.tar.gz|grep Length|cut -d' ' -f2 -
21981488
$ echo 21981488|gnumfmt --from=auto --to=iec
21M
ここで何か抜けましたか?
ベストアンサー1
出力にcurl
キャリッジリターンが含まれているようです。数字aを含むように渡されますnumfmt
。次に、転送する前に削除できますnumfmt
。
curl ... | awk -F: '/Length/{sub("\r", "", $2); print $2}' | numfmt ...
またgrep
、およびはcut
しばしば代替単一のコマンドで置き換えることができます。