Find and replace with PowerShell based on the next line

powershell replace
powershell replace regex
powershell replace newline
powershell replace string in file
powershell select-string replace
powershell replace line in file
powershell replace text in file regex
powershell replace multiple characters

I'm trying to find and replace via PowerShell based on what's on the next line of the line I want to replace. For example, the following text file:

blahblah 
flimflam 
zimzam

If the line after blahblah is flimflam, replace blahblah with new stuff

Here's the code I have so far:

$reader = New-Object System.IO.StreamReader($myFile.FullName);
$FileContents=$reader.ReadToEnd()
$reader.Close()


if(the line after "blahblah" == "flimflam") #pseudo code
{
    $FileContents=$FileContents.Replace("blahblah","new stuff")
}

If the next line is anything other than flimflam, do nothing.

One idea I had was to replace "blahblah n` flimflam" with "new stuff", but I can't get it to work. I think I might be onto something with including the new line character though.

How to read text in text files with PowerShell, How do I find and replace in a text file? To make that happen, we'll use PowerShell's replace operator. The replace operator takes as arguments the string to find and the string to replace it with. This operator can be used against any string. Below you can see how it's being used in-line against the output of Get-Content. The replace operator returns the new string.

With a RegEx with a positive lookahead you can replace the previous line without even knowing the content of that line:

(Get-Content .\SO_53398250.txt -raw) -replace "(?sm)^[^`r`n]+(?=`r?`nflimflam)","new stuff"|
 Set-Content .\SO_53398250_2.txt

See the RegEx explained on regex101.com (with different escaping `n => \n)

Text Editor inside PowerShell - PowerShell Explained, Using built-in cmdlets that come with PowerShell, we can easily read and Next, we'll have to figure out a way to find and replace the string Below you can see how it's being used in-line against the output of Get-Content. While dealing with some dotnet exception, I faced a weird problem. The exception returned by dotnet exception is having newline characters in it and it is causing my output to clutter. So, the technique I used to get rid of the situation is, replace the new line characters with space or comma. Replace new line

How To Replace Text in a File with PowerShell -- Microsoft Certified , This only requires that one small change to the existing script and it'll work string set replace=New`r`nstring set textFile=Test.txt :PowerShell  Select-String's MatchInfo objects have a 1-based LineNumber property which you can use. Get-Content returns a 0-based Object[]. Using the MatchInfo's LineNumber values -without adjusting them- as indices for the Object[] will retrieve the line after each line that successfully matched the pattern in the log.

How can I inject a newline by replacement with this script?, Next, the ReadAllText function takes an input file path and stores its entire file's contents into a string variable. With the file loaded into memory,  The above script works when I paste each individual line, but when I paste multiple lines or run the script through ISE or PowerShell, I do not get any output for any lines except Detailed CPU info and the while loop. What stupid mistake am I making? I am very new to PowerShell and tried adding a Start-Sleep, but that didn't help.

Multi-line Regular Expression Replace in Powershell, “I want you to match the word boring at the end of the string.” The Scripting Wife thought for a second, and typed the following command: $a<  I have written a PowerShell script to find and replace text within the whole document, including in the Headers and Footers as well as inside TextBoxes within the Headers. There was lots of trial and

Use PowerShell to Replace Text in Strings, I tried with the 'n as linebreak or with Here-String (searched google), but with no success. My code i was talking about adding a new line at the end of your replace. $replace All web services are based on XML. Almost all  replace string in preceding line with value from next line Welcome › Forums › General PowerShell Q&A › replace string in preceding line with value from next line This topic has 1 reply, 2 voices, and was last updated 1 year, 9 months ago by

Comments
  • I added the #pseudo code comment to that line specifically, because it's the only pseudo code line.
  • OK you've put it back now, sorry that part of my edit was not what you wanted.
  • What should happen when the input contains twice flimflam (after each other), e.g.: 'blahblah', 'flimflam', 'flimflam', 'zimzam'?