cat $tempDir\$todaysLog |
%{ [regex]::Replace($_, "[A-Z0-9._%+-]+(@[A-Z0-9.-]+\.[A-Z]{2,4}\s<\[')[A-Z0-9._%+-]+(@[A-Z0-9.-]+\.[A-Z]{2,4}'\]>)", '*sender*$1*recipients*$2', "IgnoreCase") } > $importSource2\$todaysLog
Записи в журнале должны быть похожи на строку примера (особенно часть sender@kpmg.com <['rece@kpmg.com.sg']>).
Редактировать : Я провел несколько тестов (1 мес файл (пример ~ 15000 строк)):
Решение Энди Уокера (с использованием split ) -> 18,44s
Measure-Command {
Get-Content $tempDir\$todaysLog | Where-Object { $_ -match "" } |
ForEach-Object -Process {
$fields = [regex]::split($_,'@|\s+')
Add-Content -Path $importSource2\$todaysLog -value ($($fields[0]) + "`t" + $($fields[1]) + "`t" + $($fields[2]) + " " + $($fields[3])+ "`t" + "<*sender*@"+($($fields[5])) + "`t" + "<*recipient*@"+($($fields[7])))
}
}
решение Дангфа (с использованием заменить ) -> 18,16 с
Measure-Command {
Get-Content $tempDir\$todaysLog | Where-Object { $_ -match "" } |
ForEach-Object -Process {
$s2 = $_ -replace "\t[^@\t']+@", "`t*sender*@"
$s3 = $s2 -replace "\<\['.+@", "<['*recipient*@"
Add-Content -Path $importSource2\$todaysLog -value $s3
}
}
Решение Madgnome (с использованием regex ) -> 6,16s
Measure-Command {
cat $tempDir\$todaysLog |
%{ [regex]::Replace($_, "[A-Z0-9._%+-]+(@[A-Z0-9.-]+\.[A-Z]{2,4}\s<\[')[A-Z0-9._%+-]+(@[A-Z0-9.-]+\.[A-Z]{2,4}'\]>)", '*sender*$1*recipients*$2', "IgnoreCase") } > $importSource2\$todaysLog
}