날짜를 기준으로 행 정렬

날짜를 기준으로 행 정렬

다음 형식의 텍스트 파일이 있는데 날짜를 기준으로 줄을 정렬해야 합니다. 이를 수행하는 쉬운 방법이 있습니까(바람직하게는 bash에서)?

2013-May-30     2
2013-May-21     10
2013-Jun-27     8
2013-Jun-18     9
2013-Jun-09     17
2013-May-20     21
2013-Jun-10     1
2013-Jun-01     2
2013-Aug-09     6
2013-Aug-08     5
2013-Aug-07     2
...

답변1

sortGNU에게 필드를 다른 문자(귀하의 경우 대시)로 분할하도록 지시하면 -정렬이 쉽습니다.

$ sort -n -t"-" -k1 -k2M -k3 file.txt

$ sort -n -t"-" -k1 -k2M -k3 file.txt
2013-May-20     21
2013-May-21     10
2013-May-30     2
2013-Jun-01     2
2013-Jun-09     17
2013-Jun-10     1
2013-Jun-18     9
2013-Jun-27     8
2013-Aug-07     2
2013-Aug-08     5
2013-Aug-09     6

인용하다

답변2

귀하의 정렬이 GNU 정렬이 아니고 월 이름별 정렬을 지원하지 않는 경우 해당 월 이름을 정렬할 수 있는 sort이름으로 변환해야 합니다 .sort

sed 's/$/-Jan1Feb2Mar3Apr4May5Jun6Jul7Aug8Sep9Oct10Nov11Dec12/
     s/-\(...\)\(.*\)-.*\1\([0-9]*\)[^-]*$/-\3\1\2/' |
  sort -nt- -k1 -k2 -k3 |
  sed 's/-./-/'

답변3

바로 여기에. 다음을 수행할 수 있습니다.

sort -k 2,2n -k 3
주어진 열 번호를 사용하여 데이터를 정렬합니다. 옵션 -k 2,2n -k 3은 각 열을 정렬합니다. 먼저 두 번째 열(날짜 mm 필드)을 정렬한 다음 세 번째 열(일)을 정렬합니다.

더 많은 정보를 확인하실 수 있습니다여기.

관련 정보