Estou assumindo que os endereços IP estão no formato típico de X.X.X.X
, em que X
está entre [0,255]. Sabendo disso, o grep pode fazer o trabalho de forma admirável:
grep -oP '(0|[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])(\.(0|[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){3}' filename.txt
(0|[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])
corresponderá a qualquer número entre 0 e 255, incluindo zeros à esquerda - por exemplo, 0, 255, 019, etc. Conforme escrito, no entanto, ele corresponderá a coisas como 1.1.1.1.5
(cinco octetos). Isso também não rastreia endereços IPV6.
Se você espera que os logs contenham APENAS endereços IP válidos que parecem X.X.X.X
, e podemos ASSUMIR que X
não será inválido, você pode usar uma expressão muito mais simples:
grep -oP '\d{1,3}(\.\d{1,3}){3}' filename.txt