Tente o seguinte:
grep -E '(.+\.)+.+\..+$' test.txt
Saída:
mail.google.com
srv1.mail.google.com
tt.twitter.com
Detalhes:
-
(.+\.)+- qualquer caractere seguido de ponto, pesquise esse agrupamento uma ou mais vezes. -
.+\.- qualquer caractere, uma ou mais vezes seguidas por um único período. -
.+$- qualquer caractere uma ou mais vezes, seguido por um fim de linha.
O problema com sua expressão regular é / são:
-
(.\.)*- corresponde a qualquer caractere e, em seguida, a um período. Mas o*pode corresponder a zero ou mais vezes. Você provavelmente quer+. -
.\.- corresponde exatamente a um caractere e, em seguida, um período. Você deseja que um+após o primeiro.(.+) corresponda a um ou mais caracteres. -
.$- corresponde exatamente a um caractere e, em seguida, um fim de linha. Você deseja que um+após o.(.+) corresponda a um ou mais caracteres.