다음 형식의 텍스트 파일이 있는데 날짜를 기준으로 줄을 정렬해야 합니다. 이를 수행하는 쉬운 방법이 있습니까(바람직하게는 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
sort
GNU에게 필드를 다른 문자(귀하의 경우 대시)로 분할하도록 지시하면 -
정렬이 쉽습니다.
$ 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 필드)을 정렬한 다음 세 번째 열(일)을 정렬합니다.
더 많은 정보를 확인하실 수 있습니다여기.