You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.7 KiB
Plaintext

# yq
# A lightweight and portable command-line YAML processor
# This is for yq v4. For version 3, use 'yq'
# Read spec.template node from example.yml
yq eval '.spec.template' example.yml
# Assign spec.selector.matchLabels to spec.template.metadata.labels
yq eval \
'.spec.selector.matchLabels |= .spec.template.metadata.labels' example.yaml
# Update parent to be the child value. b is a's child.
# '|=' means the . on the right is relative to the left.
yq eval '.a |= .b' sample.yml
# Update multiple nodes. a and c are siblings.
yq eval '(.a, .c) |= "potato"' sample.yml
# Update selected results.
# Only update a's children with value=='apple' to 'frog'.
yq eval '.a[] | select(. == "apple") |= "frog"' sample.yml
# Match with boolean operator 'or'.
yq eval '[.[] | select(.a == "cat" or .b == "dog")]' sample.yml
# Collect into array.
yq eval '[.a, .b]' sample.yml
# Collect into object.
yq eval '{"replicas": .spec.replicas}' sample.yml
# Splat into multiple objects.
yq eval '{"name": .pets[]}' sample.yml
# Create yaml from scratch.
yq eval --null-input '{"wrap": "frog"}'
# Delete an entry.
yq eval 'del(.b)' sample.yml
# Delete an entry by index in an array.
yq eval 'del(.[1])' sample.yml
# Retrieve a document index from a multiple-document yaml file.
yq eval '.a | documentIndex' sample.yml
# Filter/select a document by index.
yq eval 'select(. | documentIndex == 1)' sample.yml
# Merge objects with '*'.
yq eval '.a * .b' sample.yml
# Traverse all nodes recursively.
yq eval '..' sample.yml
# Traverse and change style to single quote.
yq eval '.. style="single"' sample.yml
# Shell completion.
yq shell-completion
# Evaluate multiple files
yq eval-all ".metadata.name" a.yaml b.yaml