次の例のような行を含む大きなログファイルがあります。
{"data_1":210,"target_number":1096748811,"extra_data":66}
{"data_1":0,"target_number":7130881445,"extra_data":56}
{"data_1":1712,"target_number":1098334917,"extra_data":48}
{"data_1":0,"target_number":3062674667,"extra_data":54}
{"data_1":53,"target_number":5110609228,"extra_data":246}
変えたい目標番号価値とmd5
価値の評価フルファイル。
jq
次の基本構文を使用してコマンドを試しています。
jq '.target_number|= "md5(\(.))"' input2.log
期待される出力例:
{"data_1":210,"target_number":620e25e6f054992308c564cb883e4940,"extra_data":66}
電流出力例:
{"data_1":210,"target_number":md5(1096748811),"extra_data":66}
ベストアンサー1
jq
md5
Base64などの直接計算機能はありません。これを行うには、シェルのユーティリティを使用する必要があります。
jq -c . input.log |
while IFS= read -r obj; do
md5sum=$( printf '%s' "$obj" | jq -j '.target_number' | md5sum | cut -d' ' -f1)
jq -c --arg md5 "$md5sum" '.target_number = $md5' <<<"$obj"
done > output.json
結果のハッシュmd5sum
はから数字として解釈することはできず、jq
文字列値としてのみ解釈されます。したがって、引用符で囲むでしょう。
jq
このアプローチは、入力ファイルの各行を個別に呼び出し、その数値のハッシュを計算するため、速度が遅くなると予想されます。