Como obter as últimas três últimas datas de um log de arquivo?

0

Como posso imprimir as últimas três datas da próxima saída:

User;month/day/year

    user1:01/01/2015
    user1:01/01/2015
    user1:01/01/2015
    ...
    user1:01/09/2018
    user1:01/08/2018
    user1:01/07/2018
    user1:01/04/2016
    user1:01/02/2016
    user1:01/01/2016

Neste caso (as datas de 2018)

EDITAR:

Eu tenho o próximo comando com o awk:

awk '{ print $1":" substr( $0,285,291 )}' $file_input | awk '{ print $1}' | sort -n -r

Saída desejada:

    user1:01/09/2018
    user1:01/08/2018
    user1:01/07/2018
    
por Mareyes 03.09.2018 / 18:42

2 respostas

2

Aqui, classifique na parte YYYY e depois na parte mm/dd lexicamente.

Estes seriam os 7 th a 10 th e 1 st a 5 th do segundo Campo : -delimited, respectivamente, então:

<file sort -r -b -t: -k2.7,2.10 -k 2.1,2.5 | head -n 3

(aqui adicionando um -b para permitir (e ignorar) espaços em branco ao redor do : )

    
por 03.09.2018 / 21:16
1

Considere usar a classificação assim:

sort -rt/ -k3n -k1.11n -k2n < input | head -3

Isso classifica as linhas com base em 3 campos-chave, com base em um delimitador / : primeiro o ano, depois o mês (campo 1, ignorando o nome de usuário e dois pontos) e o campo 2 - todos numericamente ordenados. O tail -3 produz apenas as últimas (últimas) 3 linhas / datas.

    
por 03.09.2018 / 19:24