Como extrair o endereço IP da string do log com a expressão regular e o Notepad ++

1

Eu tenho esse tipo de seqüências de caracteres do arquivo de log

rule family="ipv4" source address="54.246.81.158" reject
rule family="ipv4" source address="175.36.129.24" reject

Como posso combinar um endereço IP de cada uma dessas seqüências e, em seguida, substituir o original com IP correspondente usando a expressão regular no editor de texto do Notepad ++?

Resultado esperado :

54.246.81.158
175.36.129.24

Eu prefiro alcançar o objetivo usando regex e Pesquise e substitua só. Se possível, no Notepad ++ Eu sei que posso usar a funcionalidade macro, mas não quero fazer isso.

Então, a princípio, combinaremos IP com regex ( \d{1,3}.\d{1,3}.\d{1,3}.\d{1,3} ). No segundo, substituímos a string original pelo IP da etapa 1 Mas não tenho certeza se é possível usar o Notepad ++. Se eu falhar com isso, vou usar o vim :-)

Twissell
fonte
Se o texto rule family="ipv4" source address=" é comum em todas as linhas, você também pode substituir seu IP gravando um macro para uma linha e executá-la até o final do arquivo.
Sandeep
Não está muito claro o que você está tentando alcançar, por favor, edite sua pergunta e adicione mais linhas e resultados esperados.
Toto
@Toto, Exemplo adicionado, feito.
Twissell

Respostas:

0
  • Ctrl + H
  • Encontre o que: ^.+?((?:\d+\.){3}\d+).+$
  • Substituir com: $1
  • check Embrulhe em volta
  • verificar expressão regular
  • NÃO VERIFIQUE . matches newline
  • Substitua tudo

Explicação:

^           : beginning of line
.+?         : 1 or more any character but newline
(           : start group 1
  (?:       : start non capture group
    \d+     : 1 or more digit
    \.      : a dot
  ){3}      : end group, must appear 3 times
  \d+       : 1 or more digit
)           : end group 1
.+          : 1 or more any character but newline
$           : end of line

Substituição:

$1          : content of group 1 (ie. the IP)

Resultado para o exemplo dado:

54.246.81.158
175.36.129.24

Para ter certeza de que você tem um endereço IP, use

((?: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]?)))

ao invés de

((?:\d+\.){3}\d+)
Toto
fonte
Isso é o que eu quero. Obrigado! Eu usei um muito semelhante ao seu regexp, mas o meu erro foi verificado nova linha combinada caixa
Twissell
0

Solução mais simples, mas não usando o RegEx:

Substituir

rule family="ipv4" source address="

com nada e

" reject

com nada.

pbies
fonte
Obrigado pela sua resposta. Mas isso é truque, mas não abordagem de verdade , NA MINHA HUMILDE OPINIÃO
Twissell