在Powershell中使用正则表达式用单引号替换字符串

时间:2017-06-06 14:42:18

标签: regex powershell

考虑这个文件

AppConfig = {
    version: '4.0.0',
    clientId: "guid",
    httpProxy: 'rest',
    restUrl: "http://url.contoso.com/v1/",

    conferences: ["lync", "hangouts", "webex"],    // "lync", "hangouts", "webex"

    dataRefreshInterval: 60 //seconds
} 

我想用另一个字符串替换单引号内的字符串。我想更改特定属性的值(在我的情况下为version)。

$content = Get-Content $VersionFile

for($i = 0;$i -lt $content.Count; $i++)
{
    if($content[$i] -like "*version:*")
    {
        $content[$i] = $content[$i] -creplace <replaceWhat>, <replaceWith>
    }      
}

更优雅的方式如何找到version行。

2 个答案:

答案 0 :(得分:2)

如果您只想替换版本引号内的文本,可以执行以下操作:

$content = Get-Content $VersionFile
$replacement = <ReplaceWith>
$content = $content -creplace "version: '[^']*'","version: '$replacement'"

它会在您的文字

中用4.0.0替换<ReplaceWith>

答案 1 :(得分:0)

你可以试试这个:

$version = "x.x.x.x"
$content = Get-Content $VersionFile
$content -replace "version: '(.*)'","version: '$version'"