Tente isso para IPv4 :
sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/HELLO!/g' file
Substitua HELLO!
pelo que você precisa.
Exemplo:
echo "Oct 3 19:30:39 hostname pure-ftpd: ([email protected]) [INFO] New connection from 0.0.0.0" | sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/HELLO!/g'
A saída será:
Oct 3 19:30:39 hostname pure-ftpd: (username@HELLO!) [INFO] New connection from HELLO!
Com o IPv6 tudo é mais complicado do que parece. Preciso de mais exemplos de seus arquivos de log para construir o padrão de expressão regular correto. Mas o padrão mais simples para o IPv6 sendo substituído em seus logs é:
sed 's/\([A-Za-z0-9]*:\)\{1,7\}[A-Za-z0-9]\{1,4\}/HELLO!/2g' file
Esse padrão substituirá a maior parte dos endereços IPv6, mas não todos! Para substituir toda a ocorrência, você precisa de uma solução mais complexa.
Exemplo:
echo "Oct 3 19:30:39 hostname pure-ftpd: (username@2001:db8:85a3:8d3:1319:8a2e:370:7348) [INFO] New connection from 2001:db8::1" | sed 's/\([A-Za-z0-9]*:\)\{1,7\}[A-Za-z0-9]\{1,4\}/HELLO!/2g'
A saída será:
Oct 3 19:30:39 hostname pure-ftpd: (username@HELLO!) [INFO] New connection from HELLO!
Veja tópicos semelhantes sobre o regex do IPv6:
Expressões regulares que correspondem a endereços IPv6 válidos