리눅스에서 일, 일, 월, 연도를 기준으로 날짜를 정렬하는 방법

리눅스에서 일, 일, 월, 연도를 기준으로 날짜를 정렬하는 방법

아래 형식과 같이 날짜를 정렬하려고 하는데 일, 날짜, 월, 연도를 기준으로 정렬할 수 없습니다. 몇 가지 다른 방법을 시도해 보았으나 잘 되지 않습니다. 어떤 의견이라도 대단히 감사하겠습니다.

내가 시도한 것:

rpm -qa --queryformat '%{installtime:date}\n' | 
    sort -n
rpm -qa --queryformat '%{installtime:date}\n' | 
    awk '{$1=""; print $0}' | sort -t- -k2.1,2.3
rpm -qa --queryformat '%{installtime:date}\n' | 
    awk '{$1=""; print $0}' | sort -n -k3 -k2 -k1

형식/출력:

Wed 17 May 2017 01:41:05 PM CDT
Wed 17 May 2017 01:41:05 PM CDT
Wed 17 May 2017 01:41:06 PM CDT
Wed 17 May 2017 01:41:06 PM CDT
Wed 28 Apr 2021 08:56:30 AM CDT
Wed 29 Jan 2020 04:57:23 PM CST
Wed 29 Jan 2020 04:57:24 PM CST

답변1

사용된 옵션 sort-M"1월".."12월" 순서로 월을 정렬합니다.

 sort -k4,4n -k3,3M -k2,2n    

출력은 연도, 월, 마지막 날짜별로 정렬됩니다.

의 핵심 표준 형식은 -k field1[,field2]매우 중요할 수 있습니다(비록 이 경우에는 그다지 중요하지 않지만). 키가 누락된 경우 field2키의 끝은 기본적으로 줄의 끝으로 설정됩니다.

답변2

다음을 수행할 수 있습니다.

$ rpm -qa --last --queryformat '%{installtime:date}\n'

아니면:

$ rpm -qa --last --queryformat '%{installtime:date}\n' | tac

역순으로 나열해 보세요

답변3

dateman date(보기)를 사용하여 날짜를 변환 할 수 있습니다 .

"%s     seconds since the Epoch (1970-01-01 00:00 UTC)"

예를 들어

]$ date -d "Wed 17 May 2017 01:41:05 PM CDT" +%s
1495046465

그런 다음 종이에 사용한 sort다음 다시 날짜로 변환하십시오.

date -d @1495046465

man dateTZ를 다시 사용해야 할 수도 있습니다 .

관련 정보