次のファイルがあります。
[
{
"billingAccountNumber": "x",
"paymentResponseObject": {
"uiErrorDipslayMessage": "",
"transactionStatus": "S",
"transactionDescription": "",
"transactionCode": "",
"confirmationNumber": "1"
}
},
{
"billingAccountNumber": "y",
"paymentResponseObject": {
"uiErrorDipslayMessage": "",
"transactionStatus": "S",
"transactionDescription": "",
"transactionCode": "",
"confirmationNumber": "2"
}
},
{
"billingAccountNumber": "z",
"paymentResponseObject": {
"uiErrorDipslayMessage": "",
"transactionStatus": "S",
"transactionDescription": "",
"transactionCode": "",
"confirmationNumber": "3"
}
}
]
データがまったくそうではなく、3つ以上の要素があります。このデータに基づいてx.json
、、、y.json
および3つのファイルを生成したいと思いますz.json
。各ファイルの内容をpaymentResponseObject
。
これを行う方法はありますかjq
?でこれを行う方法を見つけましたが、awk
これは非常に不機嫌で、他のモードを使用してこのプロセスを繰り返すことができることを願っています。awk
各モードでスクリプトの80%を書き直す必要がありました。
ベストアンサー1
~からこれしたがって、スレッドは次のようになります。
jq -cr 'keys[] as $k | "\($k)\n\(.[$k])"' input.json | while read -r key; do
fname=$(jq --raw-output ".[$key].billingAccountNumber" input.json)
read -r item
printf '%s\n' "$item" > "./$fname"
done