小编Cap*_*nce的帖子

如何使用 Powershell -replace 替换文本文件中的多行

我正在编写一个脚本来更改配置文件中的内存值。我想在此文件中搜索一组特定的行,我尝试使用 PowerShell 来完成这项工作。

它适用于单行替换,但尝试跨多行匹配不会产生结果。脚本如下

我试图解析的配置部分如下:

    {
      "taskType": "BuildDynamicMPLSCloud",
      "version": 1,
      "subTasks": [],
      "execName": "BuildDynamicMPLSCloud",
      "execCategory": 1
      "maximumMemory": 4294967296
    },
    {
      "taskType": "BuildDynamicMap",
      "version": 1,
      "subTasks": [],
      "execName": "BuildDynamicMap",
      "execCategory": 1,
      "maximumMemory": 4294967296
    },
Run Code Online (Sandbox Code Playgroud)

针对一行进行测试以查找和替换作品:

$NewContent=Get-Content "C:\Program Files\NetBrain\Worker Server\conf\rmworker.json"  | ForEach-Object { $_-replace """maximumMemory"": 4294967296", """execName"": ""BuildDynamicMap"",`r`n`t  ""execCategory"": 1,`r`n`t  ""maximumMemory"":  8589934592" }

Set-Content -Path "C:\Program Files\NetBrain\Worker Server\conf\rmworker.json" -Value $NewContent
Run Code Online (Sandbox Code Playgroud)

上述代码的输出如下所示:

  {
      "taskType": "BuildDynamicMPLSCloud",
      "version": 1,
      "subTasks": [],
      "execName": "BuildDynamicMPLSCloud",
      "execCategory": 1
      "execName": "BuildDynamicMap",
      "execCategory": 1,
      "maximumMemory": 8589934592
    },
    {
      "taskType": "BuildDynamicMap", …
Run Code Online (Sandbox Code Playgroud)

powershell control-characters

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

control-characters ×1

powershell ×1