开发者

Problems with replacing newline

Iam trying to replace following string with PowerShell:

...
("
Intel(R) Network Connections 14.2.100.0
","
14.2.100.0
")
...

The code that I use is:

开发者_如何学Go
Get-Content $logfilepath | 
Foreach-Object { $_ -replace '`r`n`r`n', 'xx'} | 
Set-Content $logfilepath_new

But I have no success, can someone say me, where the error is?


First, you are using single quotes in the replace string -

'`r`n`r`n'

that means they are treated verbatim and not as newline characters, so you have to use -

"`r`n`r`n"

To replace, read the file as string and use the Replace() method

$content=[string] $template= [System.IO.File]::ReadAllText("test.txt")
$content.Replace("`r`n`r`n","xx")


Get-content returns an array of lines, so CRLF is essentially your delimiter. Two CRLF sequences back to back would be interpreted as the end of the currrent line, followed by a null line, so no line (object) should contain '`r`n`r`n'. A multi-line regex replace would probably be a better choice.


as alternate method using PS cmdlets:

Get-Content $logfilepath | 
    Foreach-Object -Begin { $content="" } -Process { $content += $_ ; $content += "xx" } -End { $content } | 
    Set-Content $logfilepath_new


I used the following code to replace somestring with newline:

$nl = [System.Environment]::NewLine
$content = $content.Replace( somestring, $nl )
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜