我编写了下面的 shell 命令来以整数形式输出 CPU 的时钟速度:
grep -m 1 'cpu MHz' /proc/cpuinfo | grep -o -E '[0-9]+'
输出:
900
063
这是因为确切的时钟速度是 900.063。本质上,我希望命令返回 900 部分,而不是小数点后的部分 (.063)。
非常感谢任何帮助,谢谢。
答案1
在 awk 中这可能更容易完成:
awk -F: '/cpu MHz/ {print int($2); exit}' /proc/cpuinfo
-F:
- 分裂:
/cpu MHz/
在匹配的行上cpu MHz
,执行以下操作:{print int($2); exit}'
- 将第二个字段转换为整数,打印它并退出(所以我们只得到第一个匹配项)
答案2
有很多可能性。这是另一个:
grep -m 1 'cpu MHz' /proc/cpuinfo | cut -f2 -d: | cut -f1 -d.
答案3
下面是尝试
命令
sed -n '/cpu MHz/s/.*://p' /proc/cpuinfo | sed "s/\..*//g"
awk方法
awk -F ":" '/cpu MHz/{gsub(/\..*/,"",$NF);print $NF}' /proc/cpuinfo
Python
#!/usr/bin/python
import re
k=re.compile(r'cpu MHz')
m=open('/proc/cpuinfo','r')
for i in m:
if re.search(k,i):
print i.split(":")[-1].split(".")[0]
答案4
和grep
:
grep -om1 'cpu MHz[^.]*' /proc/cpuinfo | grep -o '[[:digit:]]*'
获取不带点和以下字符的行,然后grep
获取数字。
如果您grep
支持 Perl 兼容的正则表达式 (PCRE):
grep -oPm1 'cpu MHz.* \K[[:digit:]]+' /proc/cpuinfo
之前的所有内容\K
都会照常匹配,但不包含在输出中(可变长度后向查找)。