Você entendeu mal as expressões regulares: [0-255]
não significa "um número decimal entre 0
e 255
", mas significa "um dos 0
, 1
, 2
ou 5
".
Esta é a expressão regular correta:
\b(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\b
Se você tentar, deverá obter a seguinte saída:
$ grep -E '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\b' asd.txt 1335.0.1.234 241.92.88.103
(Todos os números, exceto 1335, foram correspondidos).
Dica de bônus: Se você deseja apenas os números correspondentes (sem os pontos e os números sem correspondência), use -o
:
$ grep -Eo '\b(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9])\b' asd.txt
0
1
234
241
92
88
103
Outra dica: Se você quiser corresponder endereços IPv4 válidos (um por linha), use o seguinte comando:
grep -E '^((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])$' asd.txt