예를 들어 디렉터리/파일 목록(긴 목록의 하위 집합)에 대해 GNU 정렬을 사용하려고 합니다.
exams2008/Zoology/Summer/ZY4019Sum08.pdf
exams2009/Zoology/Summer/ZY4019.pdf
exams2010/Zoology/Summer/ZY4019Sum2010.pdf
exams2011/Zoology/Summer/ZY4019Sum2011.pdf
exams2012/Zoology/Autumn/ZY4019Aut2012.pdf
exams2012/Zoology/Summer/ZY4019Sum2012.pdf
exams2013/Zoology/Autumn/ZY4019Aut2013.pdf
exams2013/Zoology/Summer/ZY4019Sum2013.pdf
exams2014/Zoology/Summer/ZY4019Sum2014.pdf
파일 이름(네 번째 필드)과 시즌(세 번째 필드)을 기준으로 성공적으로 정렬했습니다.
$ sort -t/ -k4 -k3,3
exams2012/Zoology/Autumn/ZY4019Aut2012.pdf
exams2013/Zoology/Autumn/ZY4019Aut2013.pdf
exams2009/Zoology/Summer/ZY4019.pdf
exams2008/Zoology/Summer/ZY4019Sum08.pdf
exams2010/Zoology/Summer/ZY4019Sum2010.pdf
exams2011/Zoology/Summer/ZY4019Sum2011.pdf
exams2012/Zoology/Summer/ZY4019Sum2012.pdf
exams2013/Zoology/Summer/ZY4019Sum2013.pdf
exams2014/Zoology/Summer/ZY4019Sum2014.pdf
하지만 이와 같은 각 블록에 대해 첫 번째 필드의 6~9번째 위치의 4자리 숫자를 사용하여 세 번째 정렬 기준으로 연도별로 내림차순으로 정렬해야 합니다. 내가 사용하는 경우:
sort -t/ -k4 -k3,3 -k1.6nr,1.9
작동하는 것처럼 보이지만 세 번째 기준을 역순으로 정렬하지 않습니다.
exams2012/Zoology/Autumn/ZY4019Aut2012.pdf
exams2013/Zoology/Autumn/ZY4019Aut2013.pdf
exams2009/Zoology/Summer/ZY4019.pdf
exams2008/Zoology/Summer/ZY4019Sum08.pdf
exams2010/Zoology/Summer/ZY4019Sum2010.pdf
exams2011/Zoology/Summer/ZY4019Sum2011.pdf
exams2012/Zoology/Summer/ZY4019Sum2012.pdf
exams2013/Zoology/Summer/ZY4019Sum2013.pdf
exams2014/Zoology/Summer/ZY4019Sum2014.pdf
분명히 여기서 뭔가 잘못하고 있지만 관련 질문에서는 이 특정 조건(3차 정렬 기준, 하위 필드, 숫자, 역방향)을 다루지 않으며 실패하는 이유를 알 수 없습니다.
답변1
샘플 데이터에 새 행을 추가했는지 확인하려면 다음을 수행하세요.
exams2008/Zoology/Summer/ZY4019Sum08.pdf
exams2009/Zoology/Summer/ZY4019.pdf
exams2010/Zoology/Summer/ZY4019Sum2010.pdf
exams2011/Zoology/Summer/ZY4019Sum2011.pdf
exams2012/Zoology/Autumn/ZY4019Aut2012.pdf
exams2012/Zoology/Summer/ZY4019Sum2012.pdf
exams2013/Zoology/Autumn/ZY4019Aut2013.pdf
exams2013/Zoology/Summer/ZY4019Sum2013.pdf
exams2014/Zoology/Summer/ZY4019Sum2014.pdf
exams2014/Zoology/Summer/ZY4029Sum2014.pdf <- This is added by me
정렬도 네 번째 필드에 따라 달라진다는 점을 설명하기 위해 이를 추가합니다. 연도도 같고 3번째 필드도 같지만 4번째 필드가 다릅니다. 내가 올바르게 이해했다면 원하는 대로 작동할 것입니다.
sort -t/ -k3,3 -k1.6nr,1.9 -k4 file
산출:
exams2013/Zoology/Autumn/ZY4019Aut2013.pdf
exams2012/Zoology/Autumn/ZY4019Aut2012.pdf
exams2014/Zoology/Summer/ZY4019Sum2014.pdf
exams2014/Zoology/Summer/ZY4029Sum2014.pdf
exams2013/Zoology/Summer/ZY4019Sum2013.pdf
exams2012/Zoology/Summer/ZY4019Sum2012.pdf
exams2011/Zoology/Summer/ZY4019Sum2011.pdf
exams2010/Zoology/Summer/ZY4019Sum2010.pdf
exams2009/Zoology/Summer/ZY4019.pdf
exams2008/Zoology/Summer/ZY4019Sum08.pdf
세 번째 필드( -k3,3
)가 먼저 정렬되고, 첫 번째 필드의 문자 6~9가 숫자 반전( -k1.6nr,1.9
)으로 정렬되고, 마지막으로 네 번째 필드( -k4
)가 정렬됩니다.