【发布时间】:2016-06-02 00:55:56
【问题描述】:
我正在尝试构建一个 PowerShell 脚本,以便给它一个输入文件和正则表达式,它将匹配的内容替换为环境变量。
例如,
如果输入文件包含以下内容:
<?xml version="1.0" encoding="utf-8"?>
<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="fabric:/Services" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<Parameters>
<Parameter Name="IntegrationManager_PartitionCount" Value="1" />
<Parameter Name="IntegrationManager_MinReplicaSetSize" Value="2" />
<Parameter Name="IntegrationManager_TargetReplicaSetSize" Value="#{INT_MGR_IC}" />
<Parameter Name="EventManager_InstanceCount" Value="#{EVT_MGR_IC}" />
<Parameter Name="Entities_InstanceCount" Value="#{ENT_IC}" />
<Parameter Name="Profile_InstanceCount" Value="#{PRF_IC}" />
<Parameter Name="Identity_InstanceCount" Value="#{IDNT_IC}" />
</Parameters>
</Application>
我想构建一个脚本,将#{INT_MGR_IC} 替换为INT_MGR_IC 环境变量的值等等。
如果您知道这样的脚本或可以为我指明正确的方向,那将是一个很大的帮助。具体来说,我很想知道如何:
- 从文件中提取并循环访问密钥,例如:
#{INT_MGR_IC}、#{EVT_MGR_IC}等。 - 获得密钥后,如何将其替换为关联的环境变量。例如,
#{INT_MGR_IC}和INT_MGR_IC环境。变量。
非常感谢您对此进行调查 :)
更新 1
这是我打算使用的正则表达式:/#{(.+)}/g
【问题讨论】:
-
你的意思是循环键?循环遍历每个参数?
-
@jisaak:正确,1. 提取
#{和}... 中包含的所有字符串,然后将它们替换为关联的ENV 变量。 -
好的伙计们,在你开始投票结束这个问题之前,如果你在理解这个问题上有困难,请问我!我认为这是一个有效的问题。至少,这是我在工作中试图解决的有效问题。我相信某个地方的某个人也会受益——尤其是在自动构建/部署过程中的配置文件转换方面。
-
好的,我会尽力为您提供脚本。但不使用正则表达式,请阅读原因:stackoverflow.com/a/1732454/1163423
-
@jisaak:非常感谢您的快速回复和链接。我正在经历它。欣赏它:)
标签: regex powershell