我有一个看起来像这样的文件:
[
{
"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"
}
}
]
Run Code Online (Sandbox Code Playgroud)
数据看起来不像这样,我有三个以上的元素。从这个数据,我想创建三个文件:x.json
,y.json
,和z.json
。我希望每个文件的内容都是paymentResponseObject
.
有没有办法做到这一点jq
?我已经想出了如何在awk
. 我必须awk
为每个模式重写 80% 的脚本。
从这个SO线程:
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
Run Code Online (Sandbox Code Playgroud)