Quantcast
Channel: Active questions tagged jq - Stack Overflow
Viewing all articles
Browse latest Browse all 527

copy a value to another entry in the same element

$
0
0

There are plenty of examples of updating a value in a nested entry in jq, but I think I have a unique question, because the value I want to provide is already in another part of the same entry.

Given the following input:

{"items": [    {"name": "first"    },    {"name": "second"    }  ]}

I want to produce this output:

{"items": [    {"name": "first","value": "first"    },    {"name": "second","value": "second"    }  ]}

In other words, I want to copy the value of .name to the value of .value for each entry in items[].

Assignment is easy enough if the value is static. jq '.items[].value |= "x"

But since the value is dynamic, I always get stuck either at the wrong context level:

$ jq '.items[].value|=.name'<<< '{"items":[{"name": "first"},{"name": "second"}]}'{"items": [    {"name": "first","value": null    },    {"name": "second","value": null    }  ]}

Or with the wrong output context:

jq '.items[]|(.value=.name)'<<< '{"items":[{"name": "first"},{"name": "second"}]}'{"name": "first","value": "first"}{"name": "second","value": "second"}

How can I make the change within the entries, for each entry, but still output the whole thing from the top level?


Viewing all articles
Browse latest Browse all 527

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>