grep -E '[0-9]{5}'
está procurando números com pelo menos 5 dígitos. O que você precisa é de 5 números com pelo menos um dígito:
grep -E '[0-9]+([^0-9]+[0-9]+){4}'
-
[0-9]+
- um número de pelo menos um dígito -
[^0-9]+[0-9]+
- um número com pelo menos um dígito, precedido por pelo menos um caractere não digitável. Em seguida, repetimos isso 4 vezes para obter 5 números separados por não dígitos. - Se o requisito for exatamente 5, convém cercar essa regex com
[^0-9]
para que a linha inteira seja correspondida (com as âncoras, é claro). - Dependendo do que você deseja aqui (o
1,2,3,4,6
qualifica?), você pode procurar outros separadores. Por exemplo, um número real de notação científica adequada seria semelhante:[+-]?(([0-9]+(\.[0-9]+)?)|([0-9]?\.[0-9]+))([eE][+-][0-9]+)?
Portanto, os separadores podem não incluir.
,e
, etc. Eles podem ser apenas whitespace, comomikeserv
notes. Ou talvez vírgulas, se é um registro CSV. Ou, dependendo da localidade, uma vírgula seria o separador decimal. Varie[^0-9]
conforme sua necessidade.