我有一個Powershell腳本用於解析文件中的每一行,重新格式化它,並將新字符串寫入輸出文件。它適用於具有幾百行輸入文件。但是,我需要最終對一個擁有幾百萬行的文件運行它,而且我一直在等待幾個小時,但它還沒有完成。在this post之後,我想我需要在循環之外加入Write-Output,但是到目前爲止我還沒有成功。在Powershell中寫入輸出文件的更有效方法
這是我當前的代碼:
Foreach ($line in Get-Content $logFile) {
$arr = $line.Split()
$port1 = $arr[9].Split(":")
$port2 = $arr[11].Split(":")
$connstring = '|' + $port1[0] + "|" + $port1[1] + "|" + $port2[0] + "|" + $port2[1] + "|" + $arr[4] + "|"
Write-Output $connstring | Out-File "C:\logging\output\logout.txt" -Append
}
輸入字符串的一個例子是:
06/14-04:40:11.371923 [**] [1:4:0] other [**] [Priority: 0] {TCP} 67.202.196.92:80 -> 192.168.1.105:55043
,我需要重新格式化此:
|67.202.196.92|80|192.168.1.105|55043|other|
任何幫助非常感謝!
你只需要上尉那麼IP /端口和內容?正則表達式可能能夠更快地完成你想要的。 – TheIncorrigible1
是的,正確的。 IP,端口和標籤(在這種情況下是「其他」)。 – yodish