fbe106360
fbe106360

Reputation: 71

Replace New lines to space in matches with regex in Powershell

I'm working on a Powershell script where I'm trying to edit a logfile. The logfile has the following pattern. I selected a 3 line package with the following regex: \d{2}:\d{2}:\d{2}:\d{3}\sra-agi\sTrace:.*\n){3}(?=\n)

11:20:36:645 ra-agi Trace: asdfaa adfadaf dafadfsd adfdsfa dafsdfa dafsdfa dafdsf
11:20:36:645 ra-agi Trace:     asdfaa adfadaf dafadfsd adfdsfa dafsdfa dafsdfa dafdsf
11:20:36:645 ra-agi Trace:     asdfaa adfadaf dafadfsd adfdsfa dafsdfa dafsdfa dafdsf

11:20:36:645 ra-agi Trace: asdfaa adfadaf dafadfsd adfdsfa dafsdfa dafsdfa dafdsf
11:20:36:645 ra-agi Trace:     asdfaa adfadaf dafadfsd adfdsfa dafsdfa dafsdfa dafdsf
11:20:36:645 ra-agi Trace:     asdfaa adfadaf dafadfsd adfdsfa dafsdfa dafsdfa dafdsf

Now i would like to have these three lines on one line --> remove the new lines. It should look like the following image. so i got the three lines in one line and a empty line between the data lines.

11:20:36:645 ra-agi Trace: asdfaa adfadaf dafadfsd adfdsfa dafsdfa dafsdfa dafdsf 11:20:36:645 ra-agi Trace:     asdfaa adfadaf dafadfsd adfdsfa dafsdfa dafsdfa dafdsf 11:20:36:645 ra-agi Trace:     asdfaa adfadaf dafadfsd adfdsfa dafsdfa dafsdfa dafdsf

11:20:36:645 ra-agi Trace: asdfaa adfadaf dafadfsd adfdsfa dafsdfa dafsdfa dafdsf 11:20:36:645 ra-agi Trace:     asdfaa adfadaf dafadfsd adfdsfa dafsdfa dafsdfa dafdsf 11:20:36:645 ra-agi Trace:     asdfaa adfadaf dafadfsd adfdsfa dafsdfa dafsdfa dafdsf

11:20:36:645 ra-agi Trace: asdfaa adfadaf dafadfsd adfdsfa dafsdfa dafsdfa dafdsf 11:20:36:645 ra-agi Trace:     asdfaa adfadaf dafadfsd adfdsfa dafsdfa dafsdfa dafdsf 11:20:36:645 ra-agi Trace:     asdfaa adfadaf dafadfsd adfdsfa dafsdfa dafsdfa dafdsf

I tried it with the following code sadly its doesnt work:

$filteredLog -replace '(\d{2}:\d{2}:\d{2}:\d{3}\sra-agi\sTrace:.*\n){3}(?=\n)', '(\d{2}:\d{2}:\d{2}:\d{3}\sra-agi\sTrace:.*\s){3}(?=\n)'  > newline.txt

Does anyone have an idea how I could solve it? Thanks guys for your help in advance

Upvotes: 0

Views: 80

Answers (1)

js2010
js2010

Reputation: 27473

Assuming you're joining every three lines:

get-content file -ReadCount 3 | foreach { $_ -join ' ' } 

one two three
four five six

Upvotes: 1

Related Questions