用定义的文本替换文本



我有一个文本文件,其中包含以下

php_configuration=up21
sql_configuration=up22
apache_configuration=up23
java_script=down
html=down

我想用catdogelephant替换up21up22up23,并保持文件的剩余内容不变。

但当我执行下面的powershell脚本时,它会替换字符串,但不会保留文本文件的剩余内容:

$a=Get-Content -Path C:UsersAdministratorDesktopPowloc.txt |Select-String -Pattern 
"php_configuration"|ForEach-Object {$_ -Replace 'up21', 'cat'}


$b=Get-Content -Path C:UsersAdministratorDesktopPowloc.txt |Select-String -Pattern 
"sql_configuration"|ForEach-Object {$_ -Replace 'up22', 'dog'}

$c=Get-Content -Path C:UsersAdministratorDesktopPowloc.txt |Select-String -Pattern 
"apache_configuration"|ForEach-Object {$_ -Replace 'up23', 'elephant'}

$a, $b, $c| Set-Content -Path C:UsersAdministratorDesktopPowloc.txt

您基本上可以这样做:

(Get-Content 'C:UsersAdministratorDesktopPowloc.txt') | Foreach-Object {
$_ -replace 'up21', 'cat' `
-replace 'up22', 'dog' `
-replace 'up23', 'elephant'
} | Set-Content 'C:UsersAdministratorDesktopPowloc.txt'

是否需要指定";php_configuration"等

编辑:好的,在阅读了@T-Me下面的评论后,我改变了答案。不是最漂亮的,但给你。

(Get-Content 'C:UsersAdministratorDesktopPowloc.txt') | Foreach-Object {
if($_ | Select-string -Pattern "php_configuration"){$_ -replace 'up21', 'cat'}
elseif($_ | Select-String -Pattern "sql_configuration"){$_ -replace 'up22', 'dog'}
elseif($_ | Select-String -Pattern "apache_configuration"){$_ -replace 'up23', 'elephant'}
else {$_}
} | Set-Content 'C:UsersAdministratorDesktopPowloc.txt'

最新更新