yq/pkg/yqlib/doc/operators/delete.md
2023-05-02 15:07:04 +10:00

103 lines
1.3 KiB
Markdown

# Delete
Deletes matching entries in maps or arrays.
## Delete entry in map
Given a sample.yml file of:
```yaml
{a: cat, b: dog}
```
then
```bash
yq 'del(.b)' sample.yml
```
will output
```yaml
{a: cat}
```
## Delete nested entry in map
Given a sample.yml file of:
```yaml
{a: {a1: fred, a2: frood}}
```
then
```bash
yq 'del(.a.a1)' sample.yml
```
will output
```yaml
{a: {a2: frood}}
```
## Delete entry in array
Given a sample.yml file of:
```yaml
[1, 2, 3]
```
then
```bash
yq 'del(.[1])' sample.yml
```
will output
```yaml
[1, 3]
```
## Delete nested entry in array
Given a sample.yml file of:
```yaml
[{a: cat, b: dog}]
```
then
```bash
yq 'del(.[0].a)' sample.yml
```
will output
```yaml
[{b: dog}]
```
## Delete no matches
Given a sample.yml file of:
```yaml
{a: cat, b: dog}
```
then
```bash
yq 'del(.c)' sample.yml
```
will output
```yaml
{a: cat, b: dog}
```
## Delete matching entries
Given a sample.yml file of:
```yaml
{a: cat, b: dog, c: bat}
```
then
```bash
yq 'del( .[] | select(. == "*at") )' sample.yml
```
will output
```yaml
{b: dog}
```
## Recursively delete matching keys
Given a sample.yml file of:
```yaml
{a: {name: frog, b: {name: blog, age: 12}}}
```
then
```bash
yq 'del(.. | select(has("name")).name)' sample.yml
```
will output
```yaml
{a: {b: {age: 12}}}
```