Off the cuff, another way to do it is with awk's index function. I don't know what speed penalty this might impose.
$ cat ~/fmgrep #!/bin/awk -f BEGIN { split(ARGV[1], s, ","); ARGV[1]="" } { m = 1; for(c in s) if(index($0, s[c])) m = 0; if(m) print } $ ~/fmgrep sshd,systemd,polkitd /var/log/secure
Off the cuff, another way to do it is with awk's index function. I don't know what speed penalty this might impose.