Entrada dada:
144.252.36.69
afrloop=32235330165603
144.252.36.69
afrloop=32235330165603
144.252.36.69
afrloop=32235330165603
222.252.36.69
afrloop=31135330165603
222.252.36.69
afrloop=31135330165603
222.252.36.69
afrloop=31135330165603
222.252.36.69
afrloop=31135330165603
Como posso produzir:
144.252.36.69
afrloop=32235330165603 3 times
222.252.36.69
afrloop=31135330165603 4 times
Aqui está uma solução
awk
se você deseja um formato de saída personalizadoo script pode ser executado como
Explicação
Primeiro, usamos
NR%2==1
para corresponder às linhas de número ímpar, já que o módulo de número ímpar 2 é igual a 1, se qualquer linha corresponder a essa condição, salvamos a linha inteira$0
em uma variável chamadaip
. Podemos usarnext
para pular qualquer processamento adicional e ir direto para a próxima iteração.Em segundo lugar, usamos
NR%2==0
para corresponder linhas de números pares, se uma linha corresponder, criamos um índice rotulado comoip"\n"$0
em uma matriza
e incrementamos o valor de contagem desse índice específico. Por exemplo, uma expansão equivalente seria comoEu ignorei a nova linha
\n
neste exemplo apenas para simplificarFinalmente em
END
, após cada linha ter sido processada, usamos umfor
loop para imprimir o valor de cada elemento dentro do arraya
que, no nosso caso, é o número de contagem para cada índice únicoReferência divertida
Geração de arquivo de teste (1 milhão de registros)
@n.caillou solução de pasta
solução awk