Как проверить, что объем памяти больше, чем определенное количество из пакетного вывода? - PullRequest
2 голосов
/ 28 марта 2019

У меня есть пакетный файл, который извлекает информацию с удаленного сервера и показывает информацию для одного из моих сервисов.

Пакет, который я использую, выглядит следующим образом:

tasklist /s TESTING1 /u TESTSvc /p T$ST1ng /fi "services eq test"

Когда я запускаю пакет, я получаю информацию обратно, но мне нужно создать Regex, который сообщит мне, если память большечем определенное количество.Я новичок в Regex и должен выяснить, как написать это.

Результат пакета выглядит следующим образом:

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
tomcat9.exe                   5628 Services                   0  1,455,204 K

Я посмотрел на Регулярное выражение для проверки числа ниже значения , Регулярное выражение для суммы доллара большечем $ 500 , Извлечение строки из журналов с регулярным выражением в сценарии pig .

Я попробовал рекомендовать ответы от каждого и не получил необходимых результатов.

Память для службы может превысить отображаемую.Если он превышает 1,8 ГБ, служба начинает не отвечать должным образом.

Ответы [ 2 ]

3 голосов
/ 28 марта 2019

Чтобы сопоставить любое число от 1,800,000 до 999,999,999, за которым следует пробел, а затем буква K, вы можете использовать:

\b(?:1,[89]|(?:[2-9]|[1-9]\d{1,2}),\d)\d\d,\d{3} K

Демо: https://regex101.com/r/H3qaB4/1

Разбивка:

\b              # Word boundary.
(?:             # Start of a non-capturing group.
    1,          # Matches `1,` literally.
    [89]        # Matches 8 or 9 literally.
    |           # Alternation (OR).
    (?:         # Start of 2nd non-capturing group.
        [2-9]   # Matches any digit between 2 and 9.
        |       # OR..
        [1-9]   # A digit between 1 and 9.
        \d{1,2} # Followed by one or two digits.
    )           # End of 2nd non-capturing group.
    ,           # Matches `,` literally.
    \d          # Matches one digit.
)               # End of 1st non-capturing group.
\d\d            # Matches two digits.
,               # Matches `,` literally.
\d{3}           # Matches 3 digits.

K               # Matches `K` literally.

Чтобы сделать нижнюю границу 1,200,000 вместо 1,800,000, вы можете просто заменить деталь [89] на [2-9]:

\b(?:1,[2-9]|(?:[2-9]|[1-9]\d{1,2}),\d)\d\d,\d{3} K

Демо: https://regex101.com/r/H3qaB4/2

1 голос
/ 28 марта 2019

Один способ получить 1,8 G - 999,9 T
выглядит следующим образом:

[ ](1,[89]\d{2},\d{3}|[2-9],\d{3},\d{3}|[1-9]\d{1,2},\d{3},\d{3}|[1-9]\d{0,2},\d{3},\d{3},\d{3})[ ]K$

Expanded

 [ ] 
 (                                        # (1 start)
      1, [89] \d{2} , \d{3}                    # 1.8 G - 1.99 G
   |  
      [2-9] , \d{3} , \d{3}                    # 2.0 G - 9.9 G
   |  
      [1-9] \d{1,2} , \d{3} , \d{3}            # 10.0 G - 999.9 G
   |  
      [1-9] \d{0,2} , \d{3} , \d{3} , \d{3}    # 1.0 T  - 999.9 T
 )                                        # (1 end)
 [ ] 
 K
 $
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...