I am passing a list of regex patterns to grep to check against a syslog file. They are usually matching an IP address and log entry;
grep
grep "1
grep matches, grep -v does the inverse. If you need to "match A but not B" you usually use pipes:
grep -v
grep "${PATT}" file | grep -v "${NOTPATT}"