コマンド出力から数字を抽出する方法は?

コマンド出力から数字を抽出する方法は?

2.60次の文字列(他のコマンドの出力lscpu)からのみ印刷するコマンドを作成するにはどうすればよいですか?

model name      : Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz

ベストアンサー1

@<whitespaces>GHzlineで始まる行と行末の行の間に数字を印刷したいとしますmodel name

sed -nE 's/^model name.*@[[:space:]]*([.[:digit:]]+)GHz$/\1/p' /proc/cpuinfo

またはGNUを使用してくださいgrep

grep -Po '^model name.*@\s*\K[.\d]+(?=GHz$)' /proc/cpuinfo

については、lscpu以下も参照してください。

lscpu -J | jq -r '
  .lscpu[] |
  select(.field == "Model name:").data |
  match("@\\s*([\\d.]+)GHz$").captures[0].string |
  tonumber'

または:

lscpu -J | jq -r '.lscpu[]|select(.field == "CPU max MHz:").data|tonumber'

モデル名の基本周波数ではなく、MHz単位の最大周波数です。

おすすめ記事