2.7 KiB
String Operators
RegEx
This uses golangs native regex functions under the hood - See https://github.com/google/re2/wiki/Syntax for the supported syntax.
Join strings
Given a sample.yml file of:
- cat
- meow
- 1
- null
- true
then
yq eval 'join("; ")' sample.yml
will output
cat; meow; 1; ; true
Match string
Given a sample.yml file of:
cat
then
yq eval 'match("at")' sample.yml
will output
string: at
offset: 1
length: 2
captures: []
Match string, case insensitive
Given a sample.yml file of:
cAt
then
yq eval 'match("(?i)at")' sample.yml
will output
string: At
offset: 1
length: 2
captures: []
Match with capture groups
Given a sample.yml file of:
a cat
then
yq eval 'match("c(.t)")' sample.yml
will output
string: cat
offset: 2
length: 3
captures:
- string: at
offset: 3
length: 2
Match with named capture groups
Given a sample.yml file of:
a cat
then
yq eval 'match("c(?P<cool>.t)")' sample.yml
will output
string: cat
offset: 2
length: 3
captures:
- string: at
offset: 3
length: 2
name: cool
Match without global flag
Given a sample.yml file of:
cat cat
then
yq eval 'match("cat")' sample.yml
will output
string: cat
offset: 0
length: 3
captures: []
Match with global flag
Given a sample.yml file of:
cat cat
then
yq eval 'match("cat"; "g")' sample.yml
will output
string: cat
offset: 0
length: 3
captures: []
string: cat
offset: 4
length: 3
captures: []
Substitute / Replace string
This uses golang regex, described here
Note the use of |=
to run in context of the current string value.
Given a sample.yml file of:
a: dogs are great
then
yq eval '.a |= sub("dogs", "cats")' sample.yml
will output
a: cats are great
Substitute / Replace string with regex
This uses golang regex, described here
Note the use of |=
to run in context of the current string value.
Given a sample.yml file of:
a: cat
b: heat
then
yq eval '.[] |= sub("(a)", "${1}r")' sample.yml
will output
a: cart
b: heart
Split strings
Given a sample.yml file of:
cat; meow; 1; ; true
then
yq eval 'split("; ")' sample.yml
will output
- cat
- meow
- "1"
- ""
- "true"
Split strings one match
Given a sample.yml file of:
word
then
yq eval 'split("; ")' sample.yml
will output
- word