さまざまなログファイルからデータを読み込んで、powershellを使用してデータをcsvに入れるスクリプトを作成する必要があります。出力csvはログファイルの名前として最初の列を持ち、2番目の列はログファイルの特定の内容を持つ必要があります。2番目の列の内容は同じファイルから2回発生しません。ログファイル名。私は両方のタイプのデータを抽出することができましたが、スクリプトは結果をcsvに入れる前に正規表現パターンを使った最初の一致にのみ一致します。PowerShellのRegexは、最初に一致した行と一致します
私は次のスクリプト使用しています:私のスクリプトで
$test = gc .\datalog.txt | Select-String -Pattern '"\w:\\\w+\\' -NotMatch |
ForEach-Object {
New-Object psobject -Property @{
D_no = [regex]::Matches($_, '^[^\:]*[^\.log:]')
D_name = [regex]::Matches($_, '((?!\\)\w+\S+(?=\\)|(\w:\w+)[^"])').Groups[1].value
}
}
$test | Select-Object D_no, D_name | Export-Csv abc.csv -NoTypeInformation
D_nameは私の意図する動作がD_nameで正規表現を使用してすべてのエントリを捕獲することであるとして、行の最初の試合に一致します。しかし、私は
Select-String -allmatches '^[^\:]*[^\.log:]|(?!\\)\w+\S+(?=\\)|(\w:\w+)[^"]').Matches.Value
を使用していたときに正規表現が正常に動作しているが、これは私にD_noとD_nameの両方のための1つの列のデータを与えます。 The sample data can be found here
今、D_nameの値は、各セルの個別の値ではなく、1行に入っています – n00b
最初に、あなたの質問で「2番目の列の内容」と言っていました。そうですか?次に、export-csvは任意の数の列をサポートしていません。パイプの最初のオブジェクトをチェックし、それ以外のすべてのオブジェクトのプロパティのみをインクルードします。一致する文字列をカンマで区切ってファイルに書き出すことでexport-csvをシミュレートできます(実際にはCSV形式) –