다음 출력의 마지막 세 날짜를 인쇄하는 방법:
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개 행/날짜 만 출력합니다 .