Shell-Script
我應該如何使用 jq 命令將 JSON 文件中的值替換為其 md5 值?
我有一個大日誌文件,其中包含如下範例:
{"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}
我想用整個文件中的值評估替換target_number的值。
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}
jq
沒有md5
像base64那樣的直接計算功能。為此,您需要使用 shell 的實用程序。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
輸入文件的每一行併計算數字的雜湊值。