所以我有一个看起来像这样的文本文件:

Members : {USER\member1, USER\member2, US
           ER\member3, USER\member4, USER
           \member5, USER\member6}

而且我想删除USER\。以下代码将其删除,但在将其用换行符分隔时将其删除,例如,当一行上的US和另一行上的ER\时,将其删除。
Foreach-Object { %{$_.Replace('USER\', '') }

在其中放置`n or `r不起作用。任何帮助表示赞赏。

最佳答案

试试这个:

PS > ((Get-Content .\t.txt) | % { $_.Trim() }) -join "" -replace "USER\\"
Members : {member1, member2, member3, member4, member5, member6}

如果文本位于字符串数组中,请使用您的变量切换出(Get-Content .\t.txt)。如果文本在字符串(不是数组)变量中,请使用:
($MYSTRINGVAR.Split("`r`n") | % { $_.Trim() }) -join "" -replace "USER\\"

编辑只需修改“成员”部分:
$text = (Get-Content .\input.txt) -join "`r`n"
($text | Select-String '(?s)(?<=Members : \{)(.+?)(?=\})' -AllMatches).Matches | % {
        $text = $text.Replace($_.Value, ($_.Value -split "`r`n" | % { $_.Trim() }) -join "" -replace "USER\\")
}
$text | Set-Content output.txt

关于powershell - Powershell:查找并替换由换行符分隔的单词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14840632/

10-11 23:51