아래 형식과 같이 날짜를 정렬하려고 하는데 일, 날짜, 월, 연도를 기준으로 정렬할 수 없습니다. 몇 가지 다른 방법을 시도해 보았으나 잘 되지 않습니다. 어떤 의견이라도 대단히 감사하겠습니다.
내가 시도한 것:
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
date
man 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 date
TZ를 다시 사용해야 할 수도 있습니다 .