순서대로 여러 열을 기준으로 정렬 또는 한 번에 여러 열을 기준으로 정렬

순서대로 여러 열을 기준으로 정렬 또는 한 번에 여러 열을 기준으로 정렬

sort -t' ' -k1,1n -k2,2n이들 그리고 의 차이점은 무엇인가요 sort -t' ' -k1,2n?

예를 들어주실 수 있나요?

난 노력 했어:

logan@logan-mainPC:~/my-test/learn-sort$ cat myage 
my age 1
my age 100
my age 2
my age 200
logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort -k2,3
my age 1
my age 100
my age 2
my age 200
logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort -k2,2 -k3,3
my age 1
my age 100
my age 2
my age 200
logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort -k2,2 -k3,3n
my age 1
my age 2
my age 100
my age 200

내 생각에 sort -k2,3'age 1', 'age 100', ...을 정렬하고 sort -k2,2 -k3,3'age', 'age',... 그런 다음 '1', '100', ...을 정렬합니다. 그들은 모두 열을 문자열로 취급하기 때문에 같은 결과를 낳습니다.

그러나 sort -k2,2 -k3,3n열 3을 숫자로 처리하기 때문에 다른 결과가 생성됩니다.

하지만:

logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort -k2,3n
my age 1
my age 100
my age 2
my age 200

이상해요. 그 이유를 알아낸 이유는 2열이 숫자가 아니기 때문입니다.

logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort --debug -k2,3n
sort: using ‘en_AU.UTF-8’ sorting rules
sort: key 1 is numeric and spans multiple fields
my age 1
   ^ no match for key
________
my age 100
   ^ no match for key
__________
my age 2
   ^ no match for key
________
my age 200
   ^ no match for key
__________

감사해요.

답변1

플래그를 통해 무슨 일이 일어나고 있는지 알 수 있습니다 --debug.

sort -k2,3실제로 '1세', '100세',...를 정렬합니다.

logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort --debug -t' ' -k2,3
sort: using ‘en_AU.UTF-8’ sorting rules
my age 1
   _____
________
my age 100
   _______
__________
my age 2
   _____
________
my age 200
   _______
__________

sort -k2,2 -k3,3'나이'별로 정렬한 다음 '1', '100', ...

logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort --debug -t' ' -k2,2 -k3,3
sort: using ‘en_AU.UTF-8’ sorting rules
my age 1
   ___
       _
________
my age 100
   ___
       ___
__________
my age 2
   ___
       _
________
my age 200
   ___
       ___
__________

마지막으로

logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort --debug -t' ' -k2,2 -k3,3n
sort: using ‘en_AU.UTF-8’ sorting rules
my age 1
   ___
       _
________
my age 2
   ___
       _
________
my age 100
   ___
       ___
__________
my age 200
   ___
       ___
__________

세 번째 열을 숫자로 처리합니다.

관련 정보