GNU 유틸리티: 정렬

GNU 유틸리티: 정렬

처음 두 열을 기준으로 파일을 정렬하는 데 문제가 있습니다.

파일의 레이아웃은 다음과 같습니다

1 998688068 PizzaFan Insurance 22.47
5 072821325 Plaisio Computers 26.35
4 998688068 PizzaFan Food 27.32
5 456834578 G.Yannopoulos Medical 91.67

...

나는 다음 명령을 사용했습니다. sort -n -k 1,2 "$fpath" -o "$fpath.ordered"

정렬 결과는 다음과 같습니다.

1 473151252 Goodys Food 7.15
1 951515524 Atlantic SuperMarket 41.32
1 998688068 Atlantic SuperMarket 80.23
1 998688068 PizzaFan Food 61.72
1 998688068 PizzaFan Insurance 22.47
2 094321587 Vasilopoulos SuperMarket 6.50

...

왜 모든 열을 정렬해야 하는지 이해가 되지 않습니다(세 번째 열 및 PizzaFan Insurance 참조).

-k 1,2는 열 1을 정렬하고 열 2와의 관계를 해결하려는 것이라고 생각했지만 작동하지 않는 것 같습니다.

다음을 사용하는 것과 동일합니다. sort -n "$fpath" -o "$fpath.ordered"

답변1

안정적인 정렬(동점 발생 시 입력 줄의 상대적 순서 유지)을 원하는 경우 -s또는 --stable플래그를 사용해야 합니다.

답변2

GNU 정렬을 원하는 경우안정적인그러면 합격해야 합니다 -s. 그렇지 않으면 동일한 키를 가진 레코드가 sort내부 알고리즘에 따라 임의의 순서로 나타납니다.

관련 정보