파일 로그의 마지막 세 날짜를 얻는 방법은 무엇입니까?

파일 로그의 마지막 세 날짜를 얻는 방법은 무엇입니까?

다음 출력의 마지막 세 날짜를 인쇄하는 방법:

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

이 경우(2018년 기준)

편집하다:

다음 awk 명령이 있습니다.

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

원하는 출력:

    user1:01/09/2018
    user1:01/08/2018
    user1:01/07/2018

답변1

여기서는 YYYY부품이 먼저 정렬된 다음 mm/dd어휘별로 정렬됩니다.

이는 각각 두 번째 구분 기호 필드의 문자 7 ~10 과 문자 1 ~5 입니다 . 따라서 다음과 같습니다.:

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

( -b주변 공백을 허용(및 무시)하려면 여기에 하나를 추가하세요 :)

답변2

다음과 같은 정렬을 사용해 보세요.

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

이렇게 하면 3개의 주요 필드와 구분 기호를 기준으로 /행이 정렬 됩니다. 첫 번째 연도, 월(필드 1, 사용자 이름과 콜론 건너뛰기), 필드 2 - 모두 숫자순으로 정렬됩니다. tail -3마지막(최근) 3개 행/날짜 만 출력합니다 .

관련 정보