If patterns.txt contains one pattern per line, you can do something like this:
awk 'NR==FNR{a[$0];next}{for(i in a)if($0!~i)next}1' patterns.txt -
To search for fixed stringsOr this matches substrings instead of regular expressions, use this variant:
awk 'NR==FNR{a[$0];next}{for(i in a)if(!index($0,i))next}1' patterns.txt -
To print all instead of no lines of the input in the case that patterns.txt is empty, replace NR==FNR with FILENAME==ARGV[1], or with ARGIND==1 in gawk.
These functions print the lines of STDIN which contain each string specified as an argument as a substring. ga stands for grep all and gai ignores case.
ga(){ awk 'FILENAME==ARGV[1]{a[$0];next}{for(i in a)if(!index($0,i))next}1' <(printf %s\\n "$@") -; }
gai(){ awk 'FILENAME==ARGV[1]{a[tolower($0)];next}{for(i in a)if(!index(tolower($0),i))next}1' <(printf %s\\n "$@") -; }