Cómo comprobar si la línea tiene el siguiente formato XXXX

Cómo comprobar si la línea tiene el siguiente formato XXXX

Ya tengo :

$p =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]$

pero esto solo funciona para números, ¿cómo puedo hacer para que incluya palabras y sin importar el tamaño?

Por ejemplo:

this.should.definitely.work  

sería válido y

this1.should.definitely.work2 

Sería válido también

Respuesta1

El patrón de expresiones regulares más preciso para su caso sería:

^[^[:space:].]+\.[^[:space:].]+\.[^[:space:].]+\.[^[:space:].]+$

Respuesta2

He llegado a esta solución:

foo="this1.should.definitely.work2"
[[ $foo =~ ^.*\..*\..*\..*$ ]] && echo "match" 

Respuesta3

Podrías usar la [[:alnum:]]clase que significa letras y dígitos:

$p =~ ^[[:alnum:]]+\.[[:alnum:]]+\.[[:alnum:]]+\.[[:alnum:]]+$

información relacionada