1

以下のように解析してクエリしたいログ ファイル (*.log) があります。

行 33043: 17/07/2016;13:26:45;GetMasterOrderNo;Master Order No: 1117103907 (SoSupplierOrderNo、1117103907)
行 33048: 17/07/2016;13:26:45;AddAutoPurchHdr;PurchHdr レコードを保存できませんでした - サプライヤーの注文番号は、納品書 No.1117103907 (注文番号 1117103907)、サプライヤーの SupplierName(51) で既に使用されています
行 33049: 17/07/2016;13:26:45;ImportASN;ConvertASNFiles: GRN1171_0000700384_1117103907.xml のインポートに失敗しました。PurchHdr レコードを保存できませんでした - サプライヤーの注文番号は、納品書 No.1117103907 (注文 No.1117103907)、サプライヤーの SupplierName(51) で既に使用されています

私がやりたいことは、次のように各行をヘッダーで分割することです:

  • ライン、
  • 日にち、
  • 時間、
  • タイプ、
  • 説明

...これでクエリを実行できます。

これを行う最善の方法は何ですか?

4

3 に答える 3

0

カスタム オブジェクトのハッシュテーブル キーを作成するには、名前を持つ Regex キャプチャ グループを使用します。

Get-Content log.txt | ForEach {
    $_ -match '^Line (?<Line>\d+): (?<Day>..)/(?<Month>..)/(?<Year>....);(?<Time>.*?);(?<Type>.*?);(?<Message>.*)$'

    # Cast date and line to useful types (optional)
    $Matches['Date'] = Get-Date ($Matches['Year']+'-'+$Matches['Month']+'-'+$Matches['Day']+' '+$Matches['Time'])
    $Matches['Line'] = [int]$Matches['Line']

    New-Object -Type PSCustomObject -Property $Matches
}
于 2016-08-11T10:47:45.377 に答える