#include <iostream>
#include <regex>
using namespace std;
const std::string CpuInfo =
"Architecture: x86_64\n"
"CPU op-mode(s): 32-bit, 64-bit\n"
"Byte Order: Little Endian\n"
"Address sizes: 43 bits physical, 48 bits virtual\n"
"CPU(s): 12\n"
"On-line CPU(s) list: 0-11\n"
"Thread(s) per core: 2\n"
"Core(s) per socket: 6\n"
"Socket(s): 1\n"
"NUMA node(s): 1\n"
"Vendor ID: AuthenticAMD\n"
"CPU family: 23\n"
"Model: 1\n"
"Model name: AMD Ryzen 5 1600 Six-Core Processor\n"
"Stepping: 1\n"
"CPU MHz: 2482.474\n"
"CPU max MHz: 3200.0000\n"
"CPU min MHz: 1550.0000\n"
"BogoMIPS: 6387.25\n"
"Virtualization: AMD-V\n"
"L1d cache: 32K\n"
"L1i cache: 64K\n"
"L2 cache: 512K\n"
"L3 cache: 8192K\n"
"NUMA node0 CPU(s): 0-11";
int main() {
std::regex reg_ex("CPU MHz:\\s+([^\\n]+)\\n?");
std::smatch reg_match;
std::string result = (std::regex_search(CpuInfo, reg_match, reg_ex)) ?
reg_match[1] : std::string("Not found!");
std::cout << "CPU MHz: " << result << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmVnZXg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3Qgc3RkOjpzdHJpbmcgQ3B1SW5mbyA9CiAgIkFyY2hpdGVjdHVyZTogICAgICAgIHg4Nl82NFxuIgogICJDUFUgb3AtbW9kZShzKTogICAgICAzMi1iaXQsIDY0LWJpdFxuIgogICJCeXRlIE9yZGVyOiAgICAgICAgICBMaXR0bGUgRW5kaWFuXG4iCiAgIkFkZHJlc3Mgc2l6ZXM6ICAgICAgIDQzIGJpdHMgcGh5c2ljYWwsIDQ4IGJpdHMgdmlydHVhbFxuIgogICJDUFUocyk6ICAgICAgICAgICAgICAxMlxuIgogICJPbi1saW5lIENQVShzKSBsaXN0OiAwLTExXG4iCiAgIlRocmVhZChzKSBwZXIgY29yZTogIDJcbiIKICAiQ29yZShzKSBwZXIgc29ja2V0OiAgNlxuIgogICJTb2NrZXQocyk6ICAgICAgICAgICAxXG4iCiAgIk5VTUEgbm9kZShzKTogICAgICAgIDFcbiIKICAiVmVuZG9yIElEOiAgICAgICAgICAgQXV0aGVudGljQU1EXG4iCiAgIkNQVSBmYW1pbHk6ICAgICAgICAgIDIzXG4iCiAgIk1vZGVsOiAgICAgICAgICAgICAgIDFcbiIKICAiTW9kZWwgbmFtZTogICAgICAgICAgQU1EIFJ5emVuIDUgMTYwMCBTaXgtQ29yZSBQcm9jZXNzb3JcbiIKICAiU3RlcHBpbmc6ICAgICAgICAgICAgMVxuIgogICJDUFUgTUh6OiAgICAgICAgICAgICAyNDgyLjQ3NFxuIgogICJDUFUgbWF4IE1IejogICAgICAgICAzMjAwLjAwMDBcbiIKICAiQ1BVIG1pbiBNSHo6ICAgICAgICAgMTU1MC4wMDAwXG4iCiAgIkJvZ29NSVBTOiAgICAgICAgICAgIDYzODcuMjVcbiIKICAiVmlydHVhbGl6YXRpb246ICAgICAgQU1ELVZcbiIKICAiTDFkIGNhY2hlOiAgICAgICAgICAgMzJLXG4iCiAgIkwxaSBjYWNoZTogICAgICAgICAgIDY0S1xuIgogICJMMiBjYWNoZTogICAgICAgICAgICA1MTJLXG4iCiAgIkwzIGNhY2hlOiAgICAgICAgICAgIDgxOTJLXG4iCiAgIk5VTUEgbm9kZTAgQ1BVKHMpOiAgIDAtMTEiOwoKaW50IG1haW4oKSB7CiAgc3RkOjpyZWdleCByZWdfZXgoIkNQVSBNSHo6XFxzKyhbXlxcbl0rKVxcbj8iKTsKICBzdGQ6OnNtYXRjaCByZWdfbWF0Y2g7CiAgc3RkOjpzdHJpbmcgcmVzdWx0ID0gKHN0ZDo6cmVnZXhfc2VhcmNoKENwdUluZm8sIHJlZ19tYXRjaCwgcmVnX2V4KSkgPyAKICAgIHJlZ19tYXRjaFsxXSA6IHN0ZDo6c3RyaW5nKCJOb3QgZm91bmQhIik7IAogIHN0ZDo6Y291dCA8PCAiQ1BVIE1IejogIiA8PCByZXN1bHQgPDwgc3RkOjplbmRsOwogIHJldHVybiAwOwp9