PowerShell - сопоставлять символы ПОСЛЕ шаблона - PullRequest
1 голос
/ 26 марта 2020

У меня есть следующая строка, не разделенная линиями (это выход соединения Po sh -S Sh):

                               Active : Cumulative : Peak Concur : Inactive
                             ----------------------------------------------
AnyConnect Client            :    959 :       1652 :        1028 :       31
  SSL/TLS/DTLS               :    959 :       1652 :        1028 :       31
Site-to-Site VPN             :      5 :         35 :           5
  IKEv2 IPsec                :      2 :         24 :           2
  IKEv1 IPsec                :      3 :         11 :           3
---------------------------------------------------------------------------
Total Active and Inactive    :    995             Total Cumulative :   1687
---------------------------------------------------------------------------

---------------------------------------------------------------------------
Tunnels Summary
---------------------------------------------------------------------------
                               Active : Cumulative : Peak Concurrent   
                             ----------------------------------------------
IKEv1                        :      3 :         11 :               3
IKEv2                        :      2 :         24 :               2
IPsec                        :      7 :         45 :               9
AnyConnect-Parent            :    990 :       1652 :            1028
SSL-Tunnel                   :    912 :       2698 :             962
DTLS-Tunnel                  :    857 :       2813 :             889

Что я хочу извлечь, это " AnyConnect Client: 959:", действительно," 959"- это строка, которая мне нужна.

С этим выражением в Select-String я получаю совпадение, но мне просто нужно символы после шаблона, скажем, 50 символов (и после этого я извлеку цифры):

Select-String -Pattern "(?=.*AnyConnect Client).*"

Спасибо!

1 Ответ

2 голосов
/ 26 марта 2020

Звучит так, будто вам нужно смотреть назад ((?<=PATTERN)), а не смотреть вперед ((?=PATTERN)):

$String |Select-String -Pattern "(?<=.*AnyConnect Client\D*)\d+" |ForEach-Object {$_.Matches.Value}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...