두 개의 수직 열을 기준으로 정렬

두 개의 수직 열을 기준으로 정렬

n번째 필드가 아닌 n번째 열(숫자)에서 정렬하려는 파일이 있습니다. 파일의 개략도는 다음과 같습니다.

1 Here are four words       9 8 5 
2 Here's two                7 2 6
3 One 2 3                  10 3 7
4 Guess how many are here   9 4 8
123456789012345678901234567890123

(명확하게 설명하자면 마지막 줄은 단지 카운터일 뿐입니다). Stackexchange의 친절한 사람들이 나에게 비슷한 것이 필요하다고 말했습니다 sort -k1.27.거의내가하고 싶은 일을하세요.

그러나 초기 동점(예: 위의 1행과 4행, 둘 다 "9")이 있는 경우 정렬은 필드의 시작 부분으로 되돌아가며 이 경우 행 1이 행 4보다 먼저 정렬됩니다("1"이 오기 때문에). "4" 이전에) 내가 필요한 것은시작필드 1.27(즉, "9 8" 이전에 "9 4" 순위가 지정된 필드).

sort -g -k1.27,1.34[및 ]을 시도했지만 sort -g -k1.27,34추가 매개변수에는 눈에 띄는 효과가 없습니다... 어떤 아이디어가 있습니까?

답변1

여러 개를 정의할 수 있습니다.정렬 키:

sort -k1.27n -k1.30n

관계의 경우 대체 방법은 전체 행에 대한 어휘 비교를 수행하는 것입니다.

sort -k 1.27,1.34첫 번째 필드의 27번째 문자와 34번째 문자 사이의 줄 부분으로 구성된 키가 정의됩니다. 그러나 의 경우 이는 키가 숫자로 처리됨을 -g나타내 므로 숫자가 아닌 첫 번째 이후의 모든 항목은 무시됩니다.sort

-k1.27이용시 참고하세요그리고 그 줄의 끝에서 끝납니다. 의 경우 n초기 수치 부분만 고려됩니다.

관련 정보