Grep is not really appropriate for realtime analysis of a logfile, look for 'swatch' for a daemon that handles this.
If I understand your second question you want unique matches. The usual way to do this in the shell is to use sort and uniq.
$ grep aaa file | sort | uniq