小数点を正しく削除するためにGREPコマンドを使用しようとしています。

小数点を正しく削除するためにGREPコマンドを使用しようとしています。

CPUクロック速度を整数で出力するために、次のシェルコマンドを作成しました。

grep -m 1 'cpu MHz' /proc/cpuinfo | grep -o -E '[0-9]+'

出力:

900
063

正確なクロック速度が900.063だからです。本質的に、私はコマンドが小数部(.063)ではなく900部分を返したいと思います。

どんな助けでも大変感謝します。ありがとうございます。

答え1

awkでこれを行う方が簡単です。

awk -F: '/cpu MHz/ {print int($2); exit}' /proc/cpuinfo
  • -F:- 分かれる:
  • /cpu MHz/一致する行で、cpu MHz次の操作を行います。
    • {print int($2); exit}'- 2番目のフィールドを整数に変換して印刷して終了します(したがって、最初の一致のみを取得します)。

答え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数字を取得します。

grepPerl互換正規表現(PCRE)をサポートしている場合:

grep -oPm1 'cpu MHz.* \K[[:digit:]]+' /proc/cpuinfo

以前のすべての項目は通常\Kどおり一致しますが、出力には含まれません(可変長を振り返る)。

関連情報