1
私はファイルの各行を調べるために一連の分割を行い、各行の書式付きバージョンを出力します。入力のPowershell Get-Content、最初のオカレンスだけが必要です
例:(ここで258621)同じ接続IDを持つ文字列がある
02/17-07:54:32.290169 [**] [1:1:0] other [**] [Priority: 0] {TCP} 100.100.100.212:6667 -> 192.168.5.81:2848
02/17-07:54:32.335595 [**] [1:1:0] other [**] [Priority: 0] {TCP} 100.100.100.212:6667 -> 192.168.5.81:2848
02/17-07:54:32.335628 [**] [1:1:0] other [**] [Priority: 0] {TCP} 192.168.5.81:2848 -> 100.100.100.212:6667
06/14-06:33:47.258621 [**] [1:1:0] other [**] [Priority: 0] {TCP} 192.168.4.85:4662 -> 69.192.30.179:80
06/14-06:33:47.258621 [**] [1:1:0] other [**] [Priority: 0] {TCP} 192.168.4.85:4662 -> 69.192.30.179:80
06/14-06:33:47.258621 [**] [1:1:0] other [**] [Priority: 0] {TCP} 192.168.4.85:4662 -> 69.192.30.179:80
、私は最初の発生を必要とします。
これは接続IDを取得しますが、同じ接続IDに続く行を無視する方法がわかりません。
Get-Content $logFile -ReadCount 1 | % {
$_.Split()[0].Split(".")[1]
} | Out-File "C:\Log\logout.txt"
出力、私は258621の最初の出現を望む:
290169
335595
335628
258621
258621
258621
トリッキー部分は私も何かを使用して(それが重複した接続IDでないと仮定して)各ラインを再フォーマットする必要があるということです
'|' + (($_.Split()[9, 11, 4] -replace ':', '|') -join '|') + '|'
所望の出力:
次のように(最終的に、私は、出力の接続IDを望んでいません)|100.100.100.212|6667|192.168.5.81|2848|other|
|100.100.100.212|6667|192.168.5.81|2848|other|
|192.168.5.81|2848|100.100.100.212|6667|other|
|192.168.4.85|4662|69.192.30.179|80|other|
ありがとうございました!
美しい!ありがとうございました! – yodish
gms0ulman、[9] OR [11]が "192.168"で始まらない行をさらにフィルタリングする方法を知っていますか?私は一緒に遊んできましたが、まだ成功していません。 – yodish
@yodish IF文に条件を追加することができます。これは正規表現である必要はありません。 ' - と$ line -notlike <>'があります。 '-like/-notlike'を読んで、それを行ってください。 – gms0ulman