Added credit for merge by array example

This commit is contained in:
Mike Farah 2021-11-29 20:56:04 +11:00
parent 4c7c0b83aa
commit 418bd1a806
3 changed files with 12 additions and 0 deletions

8
merge-array-by-key.sh Executable file
View File

@ -0,0 +1,8 @@
#!/bin/bash
# ./yq ea '.[]' examples/data*.yaml
./yq ea '
((.[] | {.name: .}) as $item ireduce ({}; . * $item )) as $uniqueMap
| ( $uniqueMap | to_entries | .[]) as $item ireduce([]; . + $item.value)
' examples/data*.yaml

View File

@ -239,6 +239,8 @@ so that there are no duplicates. The second half converts that map back to an ar
To use this, you will need to update '.[]' to be the expression to your array (e.g. .my.array[]), and '.a' to be the key field of your array (e.g. '.name') To use this, you will need to update '.[]' to be the expression to your array (e.g. .my.array[]), and '.a' to be the key field of your array (e.g. '.name')
Thanks Kev from [stackoverflow](https://stackoverflow.com/a/70109529/1168223)
Given a sample.yml file of: Given a sample.yml file of:
```yaml ```yaml

View File

@ -33,6 +33,8 @@ var mergeArraysObjectKeysText = `There are two parts of the complex expression.
so that there are no duplicates. The second half converts that map back to an array. so that there are no duplicates. The second half converts that map back to an array.
To use this, you will need to update '.[]' to be the expression to your array (e.g. .my.array[]), and '.a' to be the key field of your array (e.g. '.name') To use this, you will need to update '.[]' to be the expression to your array (e.g. .my.array[]), and '.a' to be the key field of your array (e.g. '.name')
Thanks Kev from [stackoverflow](https://stackoverflow.com/a/70109529/1168223)
` `
var mergeExpression = `((.[] | {.a: .}) as $item ireduce ({}; . * $item )) as $uniqueMap var mergeExpression = `((.[] | {.a: .}) as $item ireduce ({}; . * $item )) as $uniqueMap