mirror of
https://github.com/mikefarah/yq.git
synced 2025-01-23 14:16:10 +00:00
Better string sub documentation
This commit is contained in:
parent
6c26344449
commit
b2a538bdfc
@ -20,6 +20,7 @@ cat; meow; 1; ; true
|
|||||||
|
|
||||||
## Substitute / Replace string
|
## Substitute / Replace string
|
||||||
This uses golang regex, described [here](https://github.com/google/re2/wiki/Syntax)
|
This uses golang regex, described [here](https://github.com/google/re2/wiki/Syntax)
|
||||||
|
Note the use of `|=` to run in context of the current string value.
|
||||||
|
|
||||||
Given a sample.yml file of:
|
Given a sample.yml file of:
|
||||||
```yaml
|
```yaml
|
||||||
@ -36,6 +37,7 @@ a: cats are great
|
|||||||
|
|
||||||
## Substitute / Replace string with regex
|
## Substitute / Replace string with regex
|
||||||
This uses golang regex, described [here](https://github.com/google/re2/wiki/Syntax)
|
This uses golang regex, described [here](https://github.com/google/re2/wiki/Syntax)
|
||||||
|
Note the use of `|=` to run in context of the current string value.
|
||||||
|
|
||||||
Given a sample.yml file of:
|
Given a sample.yml file of:
|
||||||
```yaml
|
```yaml
|
||||||
@ -44,7 +46,7 @@ b: heat
|
|||||||
```
|
```
|
||||||
then
|
then
|
||||||
```bash
|
```bash
|
||||||
yq eval '.[] |= sub("([a])", "${1}r")' sample.yml
|
yq eval '.[] |= sub("(a)", "${1}r")' sample.yml
|
||||||
```
|
```
|
||||||
will output
|
will output
|
||||||
```yaml
|
```yaml
|
||||||
|
@ -62,7 +62,7 @@ func substituteStringOperator(d *dataTreeNavigator, context Context, expressionN
|
|||||||
candidate := el.Value.(*CandidateNode)
|
candidate := el.Value.(*CandidateNode)
|
||||||
node := unwrapDoc(candidate.Node)
|
node := unwrapDoc(candidate.Node)
|
||||||
if node.Tag != "!!str" {
|
if node.Tag != "!!str" {
|
||||||
return Context{}, fmt.Errorf("cannot sustitute with %v, can only substitute strings", node.Tag)
|
return Context{}, fmt.Errorf("cannot substitute with %v, can only substitute strings. Hint: Most often you'll want to use '|=' over '=' for this operation.", node.Tag)
|
||||||
}
|
}
|
||||||
|
|
||||||
targetNode := substitute(node.Value, regEx, replacementText)
|
targetNode := substitute(node.Value, regEx, replacementText)
|
||||||
|
@ -15,7 +15,7 @@ var stringsOperatorScenarios = []expressionScenario{
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: "Substitute / Replace string",
|
description: "Substitute / Replace string",
|
||||||
subdescription: "This uses golang regex, described [here](https://github.com/google/re2/wiki/Syntax)",
|
subdescription: "This uses golang regex, described [here](https://github.com/google/re2/wiki/Syntax)\nNote the use of `|=` to run in context of the current string value.",
|
||||||
document: `a: dogs are great`,
|
document: `a: dogs are great`,
|
||||||
expression: `.a |= sub("dogs", "cats")`,
|
expression: `.a |= sub("dogs", "cats")`,
|
||||||
expected: []string{
|
expected: []string{
|
||||||
@ -24,9 +24,9 @@ var stringsOperatorScenarios = []expressionScenario{
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: "Substitute / Replace string with regex",
|
description: "Substitute / Replace string with regex",
|
||||||
subdescription: "This uses golang regex, described [here](https://github.com/google/re2/wiki/Syntax)",
|
subdescription: "This uses golang regex, described [here](https://github.com/google/re2/wiki/Syntax)\nNote the use of `|=` to run in context of the current string value.",
|
||||||
document: "a: cat\nb: heat",
|
document: "a: cat\nb: heat",
|
||||||
expression: `.[] |= sub("([a])", "${1}r")`,
|
expression: `.[] |= sub("(a)", "${1}r")`,
|
||||||
expected: []string{
|
expected: []string{
|
||||||
"D0, P[], (doc)::a: cart\nb: heart\n",
|
"D0, P[], (doc)::a: cart\nb: heart\n",
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user