-k 플래그는 정렬 명령에서 어떻게 작동합니까? [복사]

-k 플래그는 정렬 명령에서 어떻게 작동합니까? [복사]

다음과 같은 데이터 세트가 있습니다.

manufacturer,model,year,mileage,price
plym fury 1970 73 2500 
chevy malibu 1999 60 3000
ford mustang 1965 45 10000
volvo s80 1998 102 9850
ford thundbd 2003 15 10500
chevy malibu 2000 50 3500
bmw 315i 1985 115 450
honda accord 2001 30 6000
ford taurus 2004 10 17000
toyota rav4 2002 180 750
chevy impala 1985 85 1550
ford explor 2003 25 9500

제조업체별로 파일을 정렬한 다음 제조업체 내 가격별로 정렬해야 합니다.

책에서는 이 명령이 다음을 수행할 수 있다고 말합니다.

sort -t ' '  a -k1,1 -k5

내 질문은 위 명령과 이 명령의 차이점이 무엇인지입니다.

sort -t ' '  a -k1 -k5

-k1-k1,1나는 다음과 같이 두 명령의 출력을 개별적으로 확인했습니다.

sort -t ' '  a -k1,1 

sort -t ' '  a -k1

둘 다 동일합니다 -k5. 두 경우 모두 추가할 때 출력이 다른 이유는 무엇입니까?

-k1기능 과 기능 -k1,1의 차이를 잘 모르겠습니다 .

누구든지 주어진 데이터 세트의 맥락을 사용하여 이것을 설명할 수 있습니까?

답변1

매뉴얼 페이지에는 다음과 같이 나와 있습니다.

   -k, --key=POS1[,POS2]
          start  a  key at POS1 (origin 1), end it at POS2 (default end of
          line).  See POS syntax below

즉, 지정하지 않으면 다음 열을 모두 암시적으로 지정하게 됩니다. 여러 열을 지정한 경우 정렬은 이전 열과 동일한 열로만 정렬됩니다.

이 예를 보세요:

$ cat test
1 3 1
1 2 3
1 1 2
$ sort test -k 1 -k3
1 1 2
1 2 3
1 3 1
$ sort test -k 1,1 -k3
1 3 1
1 1 2
1 2 3

첫 번째 정렬은 열 1, 2, 3을 먼저 정렬하고, 동일할 경우 열 3을 정렬하는 것을 의미합니다. 최종 순서는 1,2,3으로 정렬하는 것으로 충분합니다.

두 번째 정렬은 먼저 열 1을 열 1로 정렬(즉, 1만)하고 순서가 여전히 명확하지 않은 경우 열 3을 기준으로 정렬하는 것을 의미합니다. 이제 정렬에서는 열 1을 보고 순서를 찾을 수 없으며 열 3을 기준으로 정렬됩니다.

관련 정보