Não sei se o regexp consegue lembrar o comprimento do padrão, por isso, para uma solução sed (parcial) pura:
editar :
isso foi um pouco mais complicado.
Eu criei um arquivo sed a.sed
p
s/[0-9]\.[0-9]/a.a/g
s/with/phase 1/
p
s/[0-9]a\.a/aa.a/g
s/a\.a[0-9]/a.aa/g
s/phase 1/phase 2/
p
s/[0-9]aa.a/aaa.a/g
s/a.aa[0-9]/a.aaa/g
s/phase 2/final/
isso basicamente faz o mesmo que a linha de comando, mas com a linha de depuração.
- primeira linha (- primeira linha, gire
1.2
paraa.a
(observe que o dígito no texto, como1.12%
, será transformado ema.a2%
) - as próximas linhas se acumulam para IP de dois e três dígitos.) gire
1.2
paraa.a
(observe que o dígito no texto, como1.12%
, será transformado ema.a2%
) - as próximas linhas são criadas para IP de dois e três dígitos.
- remover linha com
p
es/phase x/../
quando OK
use
sed -f a.sed u
em que u
é (sim, não é um IP válido, mas também não é esse o ponto)
*random text with different numbers* 255.43.23.8 *some more text* "SpecialWord" 32.123.21.44 *text again*
*random text with different 12* 255.4.2.8 *some more text* "SpecialWord" 32.12.21.44 *text again*
*random text with different 13* 255.453.263.788 *some more text* "SpecialWord" 2.123.21.454 *text again*
*random text with different 1.12%* 255.43.23.8 *some more text* "SpecialWord" 32.123.21.44 *text again*
*random text with different numbers* 5.43.23.8 *some more text* "SpecialWord" 32.3.1.44 *text again*
isso resultará em
*random text final different numbers* aaa.aa.aa.a *some more text* "SpecialWord" aa.aaa.aa.aa *text again*
*random text final different 12* aaa.a.a.a *some more text* "SpecialWord" aa.aa.aa.aa *text again*
*random text final different 13* aaa.aaa.aaa.aaa *some more text* "SpecialWord" a.aaa.aa.aaa *text again*
*random text final different a.aa%* aaa.aa.aa.a *some more text* "SpecialWord" aa.aaa.aa.aa *text again*
*random text final different numbers* a.aa.aa.a *some more text* "SpecialWord" aa.a.a.aa *text again*
edit2 : se você puder pagar um arquivo temporário
grep -Eo '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' u > v
obtenha uma lista de IP em v
sed s/[0-9]/a/g v > w
passe para o IP anônimo em w
paste -d '/' v w | sed -e 's|^.*$|s/&/|'
gera um arquivo sed que transforma o IP em um IP anônimo ...
paste -d '/' v w | sed -e 's|^.*$|s/&/|' | sed -f - u
... e aplique ao arquivo.
o resultado é o mesmo que acima, exceto para a linha com 1,12%
*random text with different 1.12%* aaa.aa.aa.a *some more text* "SpecialWord" aa.aaa.aa.aa *text again*
Suponhamos que você possa ter arquivos temporários e gostar de usar o míssil de cruzeiro para matar coelhos.