我編寫了下面的 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
都會照常匹配,但不包含在輸出中(可變長度後向查找)。