Creo que esto es lo que estabas buscando:
grep -E "string1|string2" filename
Creo que responde así:
grep 'string1.*string2\|string2.*string1' filename
solo coincida el caso donde ambos están presentes, no uno o el otro o ambos.
Puedes usar
grep 'string1' filename | grep 'string2'
O
grep 'string1.*string2\|string2.*string1' filename