처음 두 열을 기준으로 파일을 정렬하는 데 문제가 있습니다.
파일의 레이아웃은 다음과 같습니다
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
내부 알고리즘에 따라 임의의 순서로 나타납니다.