我有一个文本文件,其中包含以下
php_configuration=up21
sql_configuration=up22
apache_configuration=up23
java_script=down
html=down
我想用cat
、dog
和elephant
替换up21
、up22
和up23
,并保持文件的剩余内容不变。
但当我执行下面的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'