Portál AbcLinuxu, 12. listopadu 2025 15:04
cat /proc/loadavg 0.14 0.11 0.05 7/162 2692A ted otazka zni: jak to udelat co nejefektivneji, na jedinem radku? Zkousel jsem toto:
cut -d' ' -f4 /proc/loadavg|cut -d'/' -f2 162a toto:
awk 'BEGIN {FS="[ /]"} {print $5}' /proc/loadavg
162
Porad se mi to nezda, existuje neco jednodussiho? Treba za pomoci regularniho vyrazu ...
diky za rady!
cut -d'/' -f2 /proc/loadavg
cut -d'/' -f2 /proc/loadavg 162 2692To neni presne co jsem chtel.
#!/usr/bin/python
# -*- coding:utf-8 -*-
import time
old = 0
while True:
line = file('/proc/loadavg').readline()
n = int(line.split()[3].split('/')[1])
if old != n:
print n
old = n
time.sleep(0.1)
readem:
IFS=" /" read x x x x procs x < /proc/loadavg && echo $procsneboIFS="/" read x procs < /proc/loadavg && echo ${procs% *}
#!/usr/bin/python
# prvni parametr je regularni vyraz
# druhy parametr je soubor
import sys, re
x = sys.argv[1]
f = open(sys.argv[2],'r')
for r in f:
m = re.search(x, r)
if m:
for g in m.groups():
print g,
print
f.close
Jak je patrne, probira soubor po radcich a vypisuje casti, ktere odpovidaji zadanemu regularnimu vyrazu. Takze vyse zmineny problem resim treba takto:
./rex.py ".+ .+ .+ \d+/(.+) \d+" /proc/loadavg 162Neexistuje nejaka mala utilitka na takoveto veci?
$ time perl -ne 'print "$1\n" if m|/(\d+)|' /proc/loadavg
162
real 0m0.026s
user 0m0.003s
sys 0m0.007s
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.