Portál AbcLinuxu, 14. května 2025 01:12
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 162Porad 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)
read
em:
IFS=" /" read x x x x procs x < /proc/loadavg && echo $procs
neboIFS="/" 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.closeJak 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.