powershell

How can I replace newlines using PowerShell?


Given test.txt containing:

test
message

I want to end up with:

testing
a message

I think the following should work, but it doesn't:

Get-Content test.txt |% {$_-replace "t`r`n", "ting`r`na "}

How can I do a find and replace where what I'm finding contains CRLF?


Solution

  • A CRLF is two characters, of course, the CR and the LF. However, `n consists of both. For example:

    PS C:\> $x = "Hello
    >> World"
    
    PS C:\> $x
    Hello
    World
    PS C:\> $x.contains("`n")
    True
    PS C:\> $x.contains("`r")
    False
    PS C:\> $x.replace("o`nW","o There`nThe W")
    Hello There
    The World
    PS C:\>
    

    I think you're running into problems with the `r. I was able to remove the `r from your example, use only `n, and it worked. Of course, I don't know exactly how you generated the original string so I don't know what's in there.