둘 이상의 사전 요구 사항이 있는 문자열을 정렬하려면 어떻게 해야 합니까?

둘 이상의 사전 요구 사항이 있는 문자열을 정렬하려면 어떻게 해야 합니까?

XYZA, ZHF3, RTt2 etc.나는 많은 문자열 (약 300 개 정도)을 가지고 있으며 2 요구 사항에 따라 정렬하고 싶은 4 글자입니다 .

  1. 마지막 2글자 순으로 정렬하세요.
  2. 처음 2글자를 기준으로 동일한 마지막 2글자를 포함하는 단어를 정렬합니다.

이는 XXYY 형식의 문자열이 있고 표시된 규칙에 따라 정렬하고 싶다는 의미입니다.

나는 그것을 시도하고 있지만 sort -k.1.3,1.4동일한 항목은 15AA, a2AA, 0CAA etc.어떻게 제거할 수 있습니까? 와 같이 무작위로 정렬됩니다.

답변1

-k두 번 이상 사용할 수 있습니다. 여러 키 필드가 있는 경우 이전 키가 모두 동일하다고 비교된 후에만 이후 키가 비교됩니다.

<datafile sort -k 1.3,1.4 -k 1.1,1.2

그리고 정렬은 에 따라 다르다는 것을 기억하세요 LC_COLLATE.

답변2

작업을 역순으로 수행합니다. 먼저 다음을 기준으로 정렬합니다.처음 두 개편지, 그리고 마지막 두 글자까지. 나는 당신이 이것을 할 수도 있다고 생각합니다 :

cat file | sort | sort -k 1.3 -s

sort명령은 다음을 수행할 수 있습니다.안정적인즉, 두 줄이 "같으면" 서로 상대적인 순서가 유지됩니다. 따라서 두 번째 단계에서는 3~4번째 문자가 동일한 줄이 첫 번째 단계의 순서를 편리하게 유지합니다.

관련 정보