Internet Explorer is no longer supported. Many things will still work, but your experience will be degraded and some things won't function. Please use a modern browser such as Edge, Chrome, or Firefox.

Replace-Text

Searches a text file for a specified string and replaces it.

Script usage:

Replace-Text(
	[Include: <@(text)>],
	[Exclude: <@(text)>],
	[Directory: <text>],
	SearchText: <text>,
	[ReplaceWith: <text>],
	[Regex: <true/false>]
);

This operation may be prefixed with Files::, although this is a built-in namespace and isn't really necessary.

Arguments:

NameFormatScript UsageUsage Notes
Include
@(text)
Include
See KB#1119 to learn more about masking syntax.
Exclude
@(text)
Exclude
See KB#1119 to learn more about masking syntax.
Directory
text
Directory
Search text
text
SearchText
This argument is required.
Replace with
text
ReplaceWith
The text that replaces all occurrences of the search string found in matching files. If the Regex property is true, this property can replace matched group numbers as well, e.g.
Example line: Version: 0.0.0-b05f2ad
SearchText: Version: (\d+\.\d+\.\d+)(?<commitId>-\w+)?
ReplaceWith: Version: $ReleaseNumber`${commitId} (was `$1)
Example result: Version: 1.2.3-b05f2ad (was 0.0.0)

Note the backtick characters (`) used to escape the $ in the replacement text, which otherwise would be interpreted as OtterScript variables.
Use regex
true/false
Regex
Determines whether the search text should be interpreted as .NET Regular Expression syntax.

Example:

# Replaces the product version in an example vdproj file with the BuildMaster release number
Create-File example.vdproj
(
	Text: >>"Product"
		{
			"ProductVersion" = "8:1.0.0"
		}>>
);

Replace-Text
(
	Include: **.vdproj,
	SearchText: '"ProductVersion" = "(?<1>[0-9]+)\:[0-9]+\.[0-9]+\.[0-9]+"',
	ReplaceWith: '"ProductVersion" = "`$1:$ReleaseNumber"',
	Regex: true
);

Log-Information `$FileContents = $FileContents(example.vdproj);  # "ProductVersion" = "8:1.2.3"