如何使用 Powershell 用基于条件文本的字符串替换

如何使用 Powershell 用基于条件文本的字符串替换

我在 txt 文件中有以下内容

This is the content of Project server
This is the absolute of Project server
This is not the content of Project server
This is not the absolute content of Project server

现在,我必须使用一些文本条件而不是提供行号,将第 1 行上的项目服务器替换为域服务器?文本文件肯定会继续增加,提供行号将是一个艰难的决定,并寻找类似这样的内容,其中文本 = 这是项目服务器的内容替换(“项目服务器”,“域服务器”)并保存文件

替换(“项目服务器”,“域服务器”)将替换 txt 文件中的所有内容,而我希望使用选择字符串模式并替换单独替换第 1 行

我已经做了以下事情,但没有效果

$string = Get-Content C:\Data\newfile.txt | Select-String -Pattern "This is the content of Project server"
$newContent = $string -replace("Project server", "Domain server")

答案1

它之所以替换所有内容,是因为你$string只设置了第一行,然后我假设你$string用类似的内容写回文件Set-Content。所以你只把一行放回到文件中。

如果您确定它每次都会在第 1 行,那么您可以执行以下操作:

$string = Get-Content C:\Data\newfile.txt
$string[0] = $string[0] -replace("Project server", "Domain server")
$string | Set-Content -Path C:\Data\newfile.txt

答案2

,((Get-Content C:\Data\newfile.txt)[0] -replace("Project server", "Domain server"))+(Get-Content C:\Data\newfile.txt | Select-Object -Skip 1) | Set-Content C:\Data\newfile.txt

相关内容