gpt4 book ai didi

regex - Bash RegEx Lookahead/Lookbehind CPU 信息

转载 作者:行者123 更新时间:2023-12-04 04:39:31 29 4
gpt4 key购买 nike

我只是存储 cat /proc/cpuinfo 的输出进入 bash 脚本中的变量。

/proc/cpuinfo:

processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 58 model name : Intel(R) Core(TM) i5-3230M CPU @ 2.80GHz stepping : 9 cpu MHz : 2562.759 cache size : 6144 KB fpu : yes fpu_exception : yes cpuid level : 5 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm constant_tsc up rep_good nopl pni monitor ssse3 lahf_lm bogomips : 5125.51 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 48 bits virtual power management:

当我将信息 cat 到文本文件并 grep 时:
grep -P '(?<=model name\s:\s)[\w ()-]*(?=CPU)' infotext.txt

我得到一个匹配:
model name  : **Intel(R) Core(TM) i5-3230M** CPU @ 2.60GHz

但是,在我的 bash 脚本中对此进行测试时,我没有找到匹配项:
regex='(?<=model name\s:\s).*(?=CPU)'

if [[ $line =~ $regex ]]; then
modelName=${BASH_REMATCH[1]}
fi

这可能与将/proc/cpuinfo 的输出分类到文本文件中与简单地将其存储在变量 cpuInfo=$(cat /proc/cpuinfo) 中的差异有关。 ?

如果没有,bash 中我的正则表达式的格式是否会导致问题? (我可能需要另一种方法来对“模型名称:”和“CPU”进行前瞻/后视)。

最佳答案

regex 不适用于引号,但可以使用变量,而且 [\w] 似乎不支持修改 regex 给出结果:

re='model name\s:\s(.*?)CPU'
[[ $line =~ $re ]]
echo "${BASH_REMATCH[1]}"

关于regex - Bash RegEx Lookahead/Lookbehind CPU 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19144835/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com