De este tópico:
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
Eu tenho um arquivo assim:
[
{
"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"
}
}
]
Os dados não são exatamente assim e eu tenho mais de três elementos. Com esses dados, quero criar três arquivos: x.json
, y.json
e z.json
. Eu quero que o conteúdo de cada um desses arquivos seja o conteúdo do paymentResponseObject
.
Existe uma maneira de fazer isso com jq? Eu descobri como fazer isso no awk, mas é muito desajeitado e eu quero ser capaz de repetir esse processo com esquemas diferentes. Eu tenho que reescrever 80% do script awk para cada esquema.
De este tópico:
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