import sys
p, needle = sys.argv[1], sys.argv[2]
b = int(sys.argv[3]) if len(sys.argv) > 3 else 150
a = int(sys.argv[4]) if len(sys.argv) > 4 else 300
lim = int(sys.argv[5]) if len(sys.argv) > 5 else 20
s = open(p, encoding='utf-8', errors='replace').read()
i = 0; n = 0
while n < lim:
    j = s.find(needle, i)
    if j < 0: break
    print(f"--- @{j} ---")
    print(s[max(0, j-b): j+len(needle)+a].replace('\n', '\\n'))
    i = j + len(needle); n += 1
print(f"[{n} shown]")
