2016-07-21 7 views
1

私はバイトを含むJSONオブジェクトを取得し、私はTBに変換しています。一般的に私がこれを行う方法は、1024で4乗に分けています。jqの指数関数を使用

jqでこれを行うには、とにかくそこにされて私はjq '.value|tonumber|(./(1024*1024*1024*1024))'を使用していますが、私は1024**41024^4ようなもので1024*1024*1024*1024を交換することを好むだろうか?私が行方不明の別の方法がありますか?

データは簡単で、次のようになります。残念ながら

{ 
    "value": "43165913081459", 
    "name": "AvailableStorage" 
} 

答えて

3

、唯一の基本的な数学的な操作は、数字の上ご利用いただけます。ただし、お使いのプラットフォームで利用できる機能にはC Mathが必要です。したがって、cstdlibに含まれるものの多くは、pow()関数のような公正なゲームでなければなりません。

(.value | tonumber)/pow(1024; 4) 

そうでなければ、それを引数として渡す以外の方法は認識していません。

$ jq --argjson div "$((1024**4))" '(.value | tonumber)/$div' input.json 
+0

「jq」バージョン1.3を指定していたはずですが、1.5を使用していたことを認識するまでには時間がかかりました。あなたのソリューションは1.5でうまくいき、以下のように1.3解決策を見つける手がかりを与えました。この解決策を受け入れる。 1.3解決策: 'jq -arg div" $((1024 ** 4)) ''(.value | tonumber)/($ div | tonumber) 'input.json' – michaelcoyote

関連する問題