numfmt 入力サフィックスが無効です。

numfmt 入力サフィックスが無効です。

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しばしば代替単一のコマンドで置き換えることができます。

おすすめ記事