I am replacing this post (which was just normal grep in Python) with a script that will look for a search term and print out the last py method (def) it was seen in.
#!/usr/bin/python
import re
import sys
linenumb = 1
srchterm = ""
srchfunc = ""
lastfnum = 0
lastfunc = ""
if (len(sys.argv) < 2):
print("Usage: %s <regex search term> [<function name>]" % (sys.argv[0]))
sys.exit(0)
if (len(sys.argv) >= 2):
srchterm = sys.argv[1]
if (len(sys.argv) >= 3):
srchfunc = sys.argv[2]
while (1):
lineread = sys.stdin.readline()
if (not lineread):
break
lineread = lineread.rstrip()
if (re.match("^def .*$", lineread)):
lastfnum = linenumb
lastfunc = lineread
if (re.match("^[\t ]+.*" + srchterm + ".*$", lineread)):
if ((lastfunc == "") or (re.match("^def " + srchfunc + ".*$", lastfunc))):
if (lastfunc != ""):
print("[*] [%d] %s" % (lastfnum, lastfunc))
lastfnum = 0
lastfunc = ""
print("[-] [%d] %s" % (linenumb, lineread))
linenumb += 1
why not use grep with -B and -A?
shows lines before and after the line that had the matching text.
-A NUM, –after-context=NUM
Print NUM lines of trailing context after matching lines.
Places a line containing — between contiguous groups of
matches.
-B NUM, –before-context=NUM
Print NUM lines of leading context before matching lines.
Places a line containing — between contiguous groups of
matches.