GREP 명령으로 어려움을 겪고 소수점을 올바르게 제거합니다.

GREP 명령으로 어려움을 겪고 소수점을 올바르게 제거합니다.

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

파이썬

#!/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평소와 같이 일치하지만 출력에는 포함되지 않습니다(가변 길이 뒤돌아보기).

관련 정보