Я пытаюсь проанализировать выходные данные команды Linux lscpu с помощью регулярного выражения Python. Например, я пытаюсь получить название модели процессора и распечатать его с помощью кода ниже:
import re
import subprocess
cpu_model_name_pattern = re.compile(r'\s{1,2}Model\sname:\s+([a-zA-Z0-9\.\@\s+\(\)\-]+)$')
proc = subprocess.run('lscpu', stdout=subprocess.PIPE,\
stderr=subprocess.PIPE, shell=True, check=True, encoding="utf-8")
print(cpu_model_name_pattern.findall(proc.stdout))
Выход:
['Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz\nCPU family']
Ожидаемое название модели процессора:
['Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz']
В отличие от онлайн-тестера regex101.com, приведенное выше регулярное выражение сохраняет соответствие конца строки \n и заголовка следующей строки в выводе команды lscpu даже несмотря на то, что в конце моего регулярного выражения есть явный $.
Я пытался добавить к регулярному выражению ^, чтобы оно соответствовало началу строки , но это тоже не помогло.
Вот несколько строк из вывода команды lscpu:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 40 bits physical, 57 bits virtual
Byte Order: Little Endian
CPU(s): 12
On-line CPU(s) list: 0-11
Vendor ID: GenuineIntel
Model name: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz
CPU family: 6
Model: 106
Подробнее здесь: https://stackoverflow.com/questions/785 ... -has-at-th
Регулярное выражение Python сохраняет соответствие конца строки и следующей строки, даже если в конце есть $ ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Регулярное выражение Python, разделение строки с несколькими разделителями
Anonymous » » в форуме Python - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-