正規表現でいくつかのテキストファイルを検索しようとしています。正規表現が1行でマッチしたときに動作させることができましたが、ある行と別の行の終わりにマッチする正規表現でテストすると、動作しません。PowerShellで複数行の正規表現を使用して複数のテキストファイルをループする
私は、ファイル全体を変数/配列に読み込んだ後、正規表現検索を行う必要があることを読んだことがあります。私はこれをうまく動作させることはできませんでした。
フォルダとファイルの構造が
Root Folder ├─17-11-01 │ ├─trace-0.log │ └─trace-1.log └─17-11-02 ├─trace-0.log └─trace-1.log
ている私は、ファイルのフルパスを取得するために管理しているが、私は、ファイルの内容を読み取るかどうかはわかりません。 [IO.File]::ReadAllText($Path)
が見つかりましたが、下のコマンドにどのように追加するのかはわかりません。
Get-ChildItem $Path -Filter $Filter -Recurse |
Select FullName |
ft -HideTableHeaders
私が何をしようとしているのかをまとめます。
- 一致するテキストが複数の行にまたがる正規表現検索を行います。
- 同じルートの複数のパスに複数のファイルがあります。
- 各正規表現の一致をカウントします。
私は現在Windows上でPowerShell v2を使用しています 7しかし、私はv4にアップグレードできます。このスクリプトは、ほとんどの場合、Windows 10およびWindows Server 2012 R2以降で使用されます。
編集1 ここでは、ログファイルと正規表現の例を示します。
FINER: Entering service: ABC 2017-11-03T08:22:18.557+0100 - INFO: Some info. 2017-11-03T08:22:18.557+0100 - INFO: Some info. 2017-11-03T08:22:18.557+0100 - INFO: Some info. 2017-11-03T08:22:18.557+0100 - INFO: Some info. 2017-11-03T08:22:18.557+0100 - INFO: Some info. 2017-11-03T08:22:18.557+0100 - INFO: Some info. 2017-11-03T08:22:18.557+0100 - INFO: The request has been completed.
(2017-10-.*FINER\: Entering service: (ABC |ABC1|ABC2))[\s\S]*?(INFO: \d\d\d\d\d\d\d\d\d\d\d\d The request has been completed)
ファイルを変数に格納します。なぜあなたはonelinerコマンドを取得しようとしますか? – guiwhatsthat
@guiそれは私がonelinerでする必要はありません。コマンドを分割することで、より多くの行をテストしました。 – ChristofferL
最初に[iO.File] :: ReadAllLines()でログを読み、すべての行をループし、正規表現検索 – guiwhatsthat