我的第一篇文章,所以希望这很顺利! :)
我尝试使用powershell在文件中搜索模式,如果匹配该模式则替换整行。
在目标文件中有2个模式实例。以下代码仅适用于模式的一个实例' jmsPassword':
$file='C:\Temp\ClientConduit.xml'
$line=Select-String $file -pattern "jmsPassword"
$line=$line.linenumber
$content = Get-Content $file
$content|
ForEach-Object {
if ($_.ReadCount -eq $line) {
$_ -replace '^.+',' <PROPERTY propname="jmsPassword" proptype="STRING" propvalue="!abcd1234"/>'
} else {
$_
}
} | Set-Content $file
我有什么想法可以取代所有实例吗?
需要编辑的文本示例部分如下所示:
<TECHNICIAN class="ParameterTechnician" compressvalets="N" encryptvalets="N" export="Y" name="ParameterTechnician" package="com.extendyourstore.foundation.manager.parameter" singleton="N">
<PROPERTY propname="configScript" proptype="STRING" propvalue="classpath://config/manager/PosParameterTechnician.xml"/>
<PROPERTY propname="topicName" proptype="STRING" propvalue="jms/parameters"/>
<PROPERTY propname="listenForUpdates" proptype="STRING" propvalue="Y"/>
<!-- comment out following variables if using JBoss -->
<PROPERTY propname="clientID" proptype="STRING" propvalue="REG103"/>
<PROPERTY propname="jmsPassword" proptype="STRING" propvalue="MDAxMaiyktgunPc0NKx7QAe3g"/>
<PROPERTY propname="topicName" proptype="STRING" propvalue="jms/files"/>
<PROPERTY propname="listenForUpdates" proptype="STRING" propvalue="Y"/>
<PROPERTY propname="jmsPassword" proptype="STRING" propvalue="MDAxMaityhdxdfc0NKx7QAe3g"/>
<PROPERTY propname="durableSubscriber" proptype="STRING" propvalue="Y"/>
结果受影响的行应该像这样结束:
<TECHNICIAN class="ParameterTechnician" compressvalets="N" encryptvalets="N" export="Y" name="ParameterTechnician" package="com.extendyourstore.foundation.manager.parameter" singleton="N">
<PROPERTY propname="configScript" proptype="STRING" propvalue="classpath://config/manager/PosParameterTechnician.xml"/>
<PROPERTY propname="topicName" proptype="STRING" propvalue="jms/parameters"/>
<PROPERTY propname="listenForUpdates" proptype="STRING" propvalue="Y"/>
<!-- comment out following variables if using JBoss -->
<PROPERTY propname="clientID" proptype="STRING" propvalue="REG103"/>
<PROPERTY propname="jmsPassword" proptype="STRING" propvalue="!abcd1234"/>
<PROPERTY propname="topicName" proptype="STRING" propvalue="jms/files"/>
<PROPERTY propname="listenForUpdates" proptype="STRING" propvalue="Y"/>
<PROPERTY propname="jmsPassword" proptype="STRING" propvalue="!abcd1234"/>
<PROPERTY propname="durableSubscriber" proptype="STRING" propvalue="Y"/>
谢谢!
答案 0 :(得分:0)
$file='C:\Temp\ClientConduit.xml'
$replace=' <PROPERTY propname="jmsPassword" proptype="STRING" propvalue="!abcd1234"/>'
(Get-Content $file) | % {
if($_ -like "*jmsPassword*") {
$_ -replace '^.+',$replace
}
else {
$_
}
} | set-content $file