fork(1) download
  1. import argparse
  2.  
  3.  
  4. def remove_lines_from_keyword(filename, keywords, before, after):
  5. with open(filename, "r") as f:
  6. lines = f.readlines()
  7.  
  8. display_flags = [True] * len(lines)
  9. for i, line in enumerate(lines):
  10. if any(keyword in line for keyword in keywords):
  11. from_ = max(0, i - before)
  12. to_ = min(len(lines), i + after + 1)
  13. display_flags[from_:to_] = [False] * (to_ - from_)
  14.  
  15. for line, display_flag in zip(lines, display_flags):
  16. if display_flag:
  17. print(line, end="")
  18.  
  19.  
  20. def main():
  21. parser = argparse.ArgumentParser()
  22. parser.add_argument("-B", "--before-context", type=int, default=0)
  23. parser.add_argument("-A", "--after-context", type=int, default=0)
  24. parser.add_argument("filename")
  25. parser.add_argument("keyword", nargs="*")
  26. args = parser.parse_args()
  27. remove_lines_from_keyword(
  28. args.filename, args.keyword, args.before_context, args.after_context
  29. )
  30.  
  31.  
  32. if __name__ == "__main__":
  33. main()
  34.  
Runtime error #stdin #stdout #stderr 0.02s 10208KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
usage: prog [-h] [-B BEFORE_CONTEXT] [-A AFTER_CONTEXT]
            filename [keyword [keyword ...]]
prog: error: the following arguments are required: filename, keyword