Features
Matches pattern and prints the line number and 20 characters before and after.
Uses a sliding window to keep track of letters before pattern matching.
Reads the file in chunks, so as to manage memory consumption, handles large files really well.
DFA like implementation of kmp enables to match pattern across chunks (if broken into halves).