110 lines
2 KiB
Python
110 lines
2 KiB
Python
#!/usr/bin/python3
|
|
# extracts a couple preferred numbers from the /bin/time output
|
|
# interspersed with script output...
|
|
# From running a debug dwarfdump.
|
|
# David Anderson March 2013.
|
|
|
|
|
|
import sys
|
|
|
|
def extractnum(w):
|
|
r = ""
|
|
dot="n"
|
|
for c in w:
|
|
if c.isdigit():
|
|
r = r + c
|
|
continue
|
|
if c == '.':
|
|
dot = "y"
|
|
r = r + c
|
|
continue
|
|
return r,dot
|
|
return r,dot
|
|
|
|
|
|
def istime(w):
|
|
""" Return "y" if the number looks like a time: d*.d* """
|
|
t,d = extractnum(w)
|
|
if len(t) < 4:
|
|
return "n"
|
|
if d == "n":
|
|
return "n"
|
|
if w[0].isdigit():
|
|
if w[1].isdigit:
|
|
return "y"
|
|
elif w[1] == '.':
|
|
return "y"
|
|
return "n"
|
|
|
|
def findfinal(d):
|
|
beforenums = "y"
|
|
wds = d.split()
|
|
o= ""
|
|
o2 = ""
|
|
for w in wds:
|
|
if istime(w) == "y":
|
|
beforenums = "n"
|
|
if beforenums == "y":
|
|
o += " "
|
|
o += w
|
|
continue
|
|
else:
|
|
if w.endswith("user"):
|
|
t = ""
|
|
for c in w:
|
|
if not c == "u":
|
|
t += c
|
|
else:
|
|
o2 += " "
|
|
o2 += t
|
|
elif w.endswith("maxresident)k"):
|
|
t = ""
|
|
for c in w:
|
|
if not c == "m":
|
|
t += c
|
|
else:
|
|
o2 += " "
|
|
o2 += t
|
|
else:
|
|
ign = ""
|
|
return (o,o2)
|
|
|
|
final = ""
|
|
myfile = sys.stdin
|
|
ct = 0
|
|
#if len(sys.argv) > 1:
|
|
# print("argv[1] = ", sys.argv[1])
|
|
# v = sys.argv[1]
|
|
# if v == "-t":
|
|
# testonly = "y"
|
|
# elif v == "-v":
|
|
# testonly = "v"
|
|
# else:
|
|
# print("Argument: ", v, " unknown, exiting.")
|
|
# sys.exit(1)
|
|
|
|
while 1:
|
|
#if int(ct) > 5:
|
|
# break;
|
|
ct = ct + 1
|
|
try:
|
|
rec = myfile.readline()
|
|
except:
|
|
print(final)
|
|
break
|
|
|
|
if len(rec) < 1:
|
|
f,v = findfinal(final)
|
|
print(v,f)
|
|
break;
|
|
if rec.startswith("===") == 1:
|
|
f,v = findfinal(final)
|
|
print(v,f)
|
|
final = rec.strip()
|
|
else:
|
|
if rec.startswith("Command") == 1:
|
|
disc = rec.strip()
|
|
else:
|
|
final += " "
|
|
final += rec.strip()
|
|
|