powershell 正規表現を使用して 2 つの情報を 1 行に抽出しようとしている大きなログ ファイルがあります。ログにはあらゆる種類のデータが含まれていますが、私が興味を持っているブロックの例を以下に示します。間違ったバージョンのアプリでログインしているユーザーを見つけようとしています。
サンプルデータ (プレビューには表示されませんが、改行があります):
Device User Name: CDALLAS
Is SSO : false
Versions : id=VNF-Android
0=Client-Version,VN v4.82.1;android;SM-G900V,.
Device User Name: smith5
Is SSO : false
Versions : id=VNF-Android
0=Client-Version,VNNEXT v4.32,.
Device User Name: joe123
Is SSO : false
Versions : id=VNF-iOS
0=Client-Version,APPSTORE v5.89;iPhone OS;iPhone8 1,.
これらのそれぞれについて返す必要があるのは次のとおりです。
CDALLAS 4.82.1
smith5 4.32
joe123 5.89
理想的には、4.82.1 が正しいバージョンであるため、4.82.1 を含むレコードを除外したいと思います。
ユーザー名の部分には、次のようなものを使用できます(?<=Device User Name: )(.*)
ただし、その横にあるバージョン番号を取得するにはどうすればよいですか?
バージョン番号の前には常に「Client-Version」(テキスト)、「v」(バージョン番号)、または ; のいずれかが続きます。
正規表現はいつも頭を悩ませてきました。どんな助けでも大歓迎です。