Se você corrigir o erro de digitação destinatiion
no arquivo de entrada (ou modificar o script para usar destinati?ion
para que ele lida com a ortografia), então a saída do meu script perl A resposta para sua última pergunta pode ser canalizada para uniq -f2
para obter a saída desejada.
A opção -f2
informa uniq
para ignorar os dois primeiros campos ao comparar as linhas para exclusividade.
por exemplo. com a linha @lines = map ...
no script perl alterada para:
@lines = map { $_ =~ s/(source|destinati?ion)$/both/oi; $_} @lines;
A saída é assim:
$ ./swatesh.pl < swatesh2.txt | uniq -f2
2014-11-24 12:59:42.169 101.0.0.0 source
2014-11-24 12:59:40.375 104.156.80.0 destinatiion
2014-11-24 12:59:36.729 104.219.48.0 destinatiion
2014-11-24 12:59:40.377 104.37.160.0 source
2014-11-24 12:58:58.902 107.188.128.0 both
2014-11-24 12:59:06.840 107.192.0.0 both
2014-11-24 12:59:55.488 111.0.0.0 both
2014-11-24 12:59:33.209 108.175.32.0 both
Se você quiser a saída de data e hora mais recente , primeiro classifique a entrada na ordem inversa pelo endereço IP (campo 3) e depois pela data e hora (campos 1 e 2) antes de conectá-la no meu script perl (swatesh.pl) e uniq -f2
. Opcionalmente, classifique a saída final de modo que fique em ordem crescente de data e hora. por exemplo,
$ sort -r -k3,3 -k1,2 swatesh2.txt | ./swatesh.pl | uniq -f2 | sort
2014-11-24 12:59:06.456 107.188.128.0 both
2014-11-24 12:59:33.209 108.175.32.0 both
2014-11-24 12:59:36.729 104.219.48.0 destinatiion
2014-11-24 12:59:40.375 104.156.80.0 destinatiion
2014-11-24 12:59:40.377 104.37.160.0 source
2014-11-24 12:59:42.043 107.192.0.0 both
2014-11-24 12:59:42.169 101.0.0.0 source
2014-11-24 12:59:55.488 111.0.0.0 both