0
這裏是我使用的腳本,傳入的文件大約500MB是什麼讓這個PowerShell腳本太慢以讀取文件中的行?
$file=$args[0]
If ($args[1] -eq 'response') {
$results = Select-String -Path $file -Pattern "(?<=sent:).+(?= type)" | Select -Expand Matches | Select -Expand Value
}
If ($args[1] -eq 'blocked') {
$results = Select-String -Path $file -Pattern "(?<=:).+(?= ->)" | Select -Expand Matches | Select -Expand Value
}
If ($args[1] -eq 'clients') {
$results = Select-String -Path $file -Pattern "(?<=:\d\d).+(?= \[)" | Select -Expand Matches | Select -Expand Value
}
$results | Group-Object | Select-Object Name,Count | Sort-Object Count -Descending
是否有快速的方式來獲得這個同樣的數據呢?我不以任何方式與PowerShell結婚。
如果你解釋腳本應該做什麼(因此人們不必解析正則表達式並找出它們),你可能會得到更好的迴應。 –
使用帶有'-ReadCount 1000'的'Get-Content'並將其連接到'Select-String'?你確定你的瓶頸不是最後一行嗎? 「Group-Object」cmdlet非常有用,但不是很快(IMO)。 – TheMadTechnician
同意@TheMadTechnician有關Group-Object緩慢。如果目標只是獲取匹配值的集合,則Select-String也比-match運算符慢得多。 – mjolinor