Penso che questo sia quello che stavi cercando:
grep -E "string1|string2" filename
Penso che risponda così:
grep 'string1.*string2\|string2.*string1' filename
corrisponde solo al caso in cui sono presenti entrambi, non l'uno o l'altro o entrambi.
Puoi usare
grep 'string1' filename | grep 'string2'
Oppure
grep 'string1.*string2\|string2.*string1' filename