replace_patterns
This promise refers to arbitrary text patterns in a file. The pattern is expressed as a PCRE regular expression.
replace_patterns:
"search pattern"
replace_with => replace_body,
...;
In replace_patterns
promises, the regular expression may
match a line fragment, that is, it is unanchored.
bundle edit_line upgrade_cfexecd
{
replace_patterns:
"cfexecd" replace_with => value("cf-execd");
}
body replace_with value(x) # defined in cfengine_stdlib.cf
{
replace_value => "$(x)";
occurrences => "all";
}
This is a straightforward search and replace function. Only the portion of the line that matches the pattern in the promise will be replaced; the remainder of the line will not be affected. You can also use PCRE look-behind and look-ahead patterns to restrict the lines upon which the pattern will match.
Attributes
replace_with
Type: body replace_with
Common Body Attributes
Common body attributes are available to all body types. Full details for common body attributes can be found in the Common Body Attributes section of the Promise Types and Attributes page. The common attributes are as follows:
inherit_from
meta
occurrences
Description: Defines which occurrences should be replaced.
Using "first" is generally unwise, as it will change a different matching string each time the promise is executed, and may not "catch up" with whatever external action is altering the text the promise applies to.
Type: (menu option)
Allowed input range:
all
Replace all occurrence.
first
Replace only the first occurrence. Note: this is non-convergent.
Default value: all
Example:
body replace_with example
{
occurrences => "first"; # Warning! Using "first" is non-convergent
}
replace_value
Description: Value used to replace regular expression matches in search
Type: string
Allowed input range: .*
Example:
body replace_with example(s)
{
replace_value => "$(s)";
}