
Ich habe den folgenden Shell-Befehl geschrieben, um die Taktfrequenz der CPU als Ganzzahl auszugeben:
grep -m 1 'cpu MHz' /proc/cpuinfo | grep -o -E '[0-9]+'
AUSGABE:
900
063
Dies liegt daran, dass die genaue Taktfrequenz 900,063 beträgt. Im Wesentlichen möchte ich, dass der Befehl den Teil 900 zurückgibt, aber nicht den Teil nach der Dezimalstelle (.063).
Ich bin für jede Hilfe sehr dankbar, danke.
Antwort1
Dies lässt sich möglicherweise einfacher in awk erledigen:
awk -F: '/cpu MHz/ {print int($2); exit}' /proc/cpuinfo
-F:
- aufgeteilt auf:
/cpu MHz/
Führen Sie bei übereinstimmenden Zeilencpu MHz
Folgendes aus:{print int($2); exit}'
- Konvertieren Sie das zweite Feld in eine Ganzzahl, drucken Sie es aus und beenden Sie das Programm (sodass wir nur die erste Übereinstimmung erhalten)
Antwort2
Es gibt viele Möglichkeiten. Hier ist noch eine:
grep -m 1 'cpu MHz' /proc/cpuinfo | cut -f2 -d: | cut -f1 -d.
Antwort3
Unten finden Sie Try
Befehl
sed -n '/cpu MHz/s/.*://p' /proc/cpuinfo | sed "s/\..*//g"
Awk-Methode
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]
Antwort4
Mit grep
:
grep -om1 'cpu MHz[^.]*' /proc/cpuinfo | grep -o '[[:digit:]]*'
Holen Sie sich die Zeile ohne den Punkt und die folgenden Zeichen, dann grep
für die Ziffern.
Wenn Ihr grep
Perl-kompatible reguläre Ausdrücke (PCRE) unterstützt:
grep -oPm1 'cpu MHz.* \K[[:digit:]]+' /proc/cpuinfo
Alles davor \K
wird wie üblich abgeglichen, aber nicht in die Ausgabe aufgenommen (Lookbehind mit variabler Länge).