Reputation: 71
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
Reputation: 27473
Assuming you're joining every three lines:
get-content file -ReadCount 3 | foreach { $_ -join ' ' }
one two three
four five six
Upvotes: 1