Como verificar se a linha está no seguinte formato XXXX

Como verificar se a linha está no seguinte formato XXXX

Eu já tenho :

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

mas isso só funciona para números, como posso fazer com que inclua palavras e independente do tamanho.

Por exemplo:

this.should.definitely.work  

seria válido e

this1.should.definitely.work2 

também seria válido

Responder1

O padrão regex mais preciso para o seu caso seria:

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

Responder2

Cheguei a esta solução:

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

Responder3

Você poderia usar a [[:alnum:]]classe que significa letras e dígitos:

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

informação relacionada