Extraindo Informações do Arquivo de Texto

1

Eu tenho um cenário a seguir para fazer em um arquivo de texto.

Eu tenho um arquivo de texto grande que é gerado a partir do meu servidor e inclui as seguintes informações.

a) Muitos dados inúteis em ASCII com alguns endereços IP de computadores conectados ao servidor.

b) O endereço IP não está escrito no seu todo, é como este sfafaffs @ 192 @ sdsfa @ 168 @ dfs8989090sdffsff0.09sf @ 90 @ 90dsaaQW @ 1 @. Isso é ip está entre as @tags

Meu objetivo é criar um arquivo de texto que imprima o ip com a variável do contador correspondente, mostrando as ocorrências de um determinado ip.

Como abordar para resolver este problema. Por favor, também me guie, não poste solução, pois isso limitará minhas habilidades. por exemplo, se da próxima vez eu me deparo com outro problema relacionado com isso, o que eu faria? Então, por favor, me avise qual deve ser a estratégia para resolver esses tipos de problemas?

    
por Naseer Ahmed 28.03.2014 / 19:33

1 resposta

2

Neste exercício, grep , sed e awk serão seus amigos.

Aqui está uma sugestão para o primeiro problema: Analisando o IP da linha de lixo

Isso funcionará se cada IP estiver em sua própria linha, cercado por lixo, com @ sinais em cada lado dos números.

'teste' é apenas um arquivo em que colei seu exemplo em

grep -nPo '@\d{1,3}@' test | sed 's/@//g'

grep: -n preende o número da linha, P permite usar o regex Perl, o retorna somente a parte correspondente.

o regex correspondeu a qualquer grupo de dígitos de comprimento 1 a 3 cercados por @ sinais

Sed: retira o sinal @ substituindo-os por nada

Sua saída será:

1:192
1:168
1:90
1:1

Onde 1 é o número da linha. Deixei lá porque você pode usar awk para encontrar peças com números de linha correspondentes e concatená-las para criar um endereço IP.

    
por dan08 28.03.2014 / 19:57