Usando sort
com um pouco de ajuda de tac
:
sort -k4,4 file.log | tac | sort -uk4,4 | sort -k1,2
Para receber as últimas 10 entradas, envie para tail -10
no final:
sort -k4,4 file.log | tac | sort -uk4,4 | sort -k1,2 | tail -10
-
-k
opção desort
deixe-nossort
por número de campo separado por espaço como chave -
tac
inverterá as linhas do conteúdo de entrada, ou seja, a última será a primeira e a primeira será a última; isso é necessário, poissort -u
produzirá a primeira entrada como única ao usar a teclasort
, ou seja, nem todas as linhas têm conteúdo semelhante, mas elas correspondem a um campo específico
Exemplo:
$ sort -k4,4 file.log | tac | sort -uk4,4 | sort -k1,2
2016-04-18 10:21:20,257 (glastopf.glastopf) 150.70.188.165 requested GET / on 711b3fb7d875:80
2016-04-18 10:35:27,775 (glastopf.glastopf) 150.70.173.55 requested GET / on 711b3fb7d875:80
2016-04-18 11:07:15,576 (glastopf.glastopf) 204.12.196.236 requested GET / on 711b3fb7d875:80
2016-04-18 11:53:59,103 (glastopf.glastopf) 150.70.173.9 requested GET / on 711b3fb7d875:80
2016-04-18 12:47:00,555 (glastopf.glastopf) 115.239.248.245 requested GET http://zc.qq.com/cgi-bin/common/attr?id=260714&r=0.5692431772822398 on 711b3fb7d875:80
2016-04-18 12:50:34,078 (glastopf.glastopf) 150.70.188.178 requested GET / on 711b3fb7d875:80