私は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|
すべてのヘルプ非常に高く評価されています!
あなただけCAPTする必要がありますかIP /ポートとそれ以降のコンテンツを確認しますか?正規表現はあなたが望むものをより速く達成できるかもしれません。 – TheIncorrigible1
はい、正しく入力してください。 IP、ポート、タグ(この場合は「other」)。 – yodish