Added another delete example

This commit is contained in:
Mike Farah 2021-01-08 11:59:49 +11:00
parent 2a6e423d2d
commit db62a16007
4 changed files with 30 additions and 2 deletions

View File

@ -95,3 +95,23 @@ will output
b: dog b: dog
``` ```
## Recursively delete matching keys
Given a sample.yml file of:
```yaml
a:
name: frog
b:
name: blog
age: 12
```
then
```bash
yq eval 'del(.. | select(has("name")).name)' sample.yml
```
will output
```yaml
a:
b:
age: 12
```

View File

@ -1,4 +1,4 @@
This operator recursively matches all children nodes given of a particular element, including that node itself. This is most often used to apply a filter recursively against all matches. It can be used in either the This operator recursively matches (or globs) all children nodes given of a particular element, including that node itself. This is most often used to apply a filter recursively against all matches. It can be used in either the
## match values form `..` ## match values form `..`
This will, like the `jq` equivalent, recursively match all _value_ nodes. Use it to find/manipulate particular values. This will, like the `jq` equivalent, recursively match all _value_ nodes. Use it to find/manipulate particular values.

View File

@ -1,4 +1,4 @@
This operator recursively matches all children nodes given of a particular element, including that node itself. This is most often used to apply a filter recursively against all matches. It can be used in either the This operator recursively matches (or globs) all children nodes given of a particular element, including that node itself. This is most often used to apply a filter recursively against all matches. It can be used in either the
## match values form `..` ## match values form `..`
This will, like the `jq` equivalent, recursively match all _value_ nodes. Use it to find/manipulate particular values. This will, like the `jq` equivalent, recursively match all _value_ nodes. Use it to find/manipulate particular values.

View File

@ -61,6 +61,14 @@ var deleteOperatorScenarios = []expressionScenario{
"D0, P[], (doc)::{b: dog}\n", "D0, P[], (doc)::{b: dog}\n",
}, },
}, },
{
description: "Recursively delete matching keys",
document: `{a: {name: frog, b: {name: blog, age: 12}}}`,
expression: `del(.. | select(has("name")).name)`,
expected: []string{
"D0, P[], (!!map)::{a: {b: {age: 12}}}\n",
},
},
} }
func TestDeleteOperatorScenarios(t *testing.T) { func TestDeleteOperatorScenarios(t *testing.T) {