# 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
```
