ฉันพยายามเรียงลำดับหลายคอลัมน์ ผลลัพธ์ไม่เป็นไปตามที่คาดไว้
นี่คือข้อมูลของฉัน (people.txt):
Simon Strange 62
Pete Brown 37
Mark Brown 46
Stefan Heinz 52
Tony Bedford 50
John Strange 51
Fred Bloggs 22
James Bedford 21
Emily Bedford 18
Ana Villamor 44
Alice Villamor 50
Francis Chepstow 56
การทำงานต่อไปนี้ถูกต้อง:
bash-3.2$ sort -k2 -k3 <people.txt
Emily Bedford 18
James Bedford 21
Tony Bedford 50
Fred Bloggs 22
Pete Brown 37
Mark Brown 46
Francis Chepstow 56
Stefan Heinz 52
John Strange 51
Simon Strange 62
Ana Villamor 44
Alice Villamor 50
แต่สิ่งต่อไปนี้ใช้ไม่ได้ตามที่คาดไว้:
bash-3.2$ sort -k2 -k1 <people.txt
Emily Bedford 18
James Bedford 21
Tony Bedford 50
Fred Bloggs 22
Pete Brown 37
Mark Brown 46
Francis Chepstow 56
Stefan Heinz 52
John Strange 51
Simon Strange 62
Ana Villamor 44
Alice Villamor 50
ฉันพยายามจัดเรียงตามนามสกุลแล้วตามชื่อ แต่คุณจะเห็นว่า Villamors ไม่ได้อยู่ในลำดับที่ถูกต้อง ฉันหวังว่าจะเรียงตามนามสกุลและจากนั้นเมื่อนามสกุลตรงกันเพื่อเรียงตามชื่อ
ดูเหมือนว่ามีบางอย่างเกี่ยวกับวิธีการทำงานนี้ฉันไม่เข้าใจ ฉันสามารถทำสิ่งนี้ได้ด้วยวิธีอื่น (โดยใช้ awk) แต่ฉันต้องการเข้าใจการเรียงลำดับ
ฉันใช้ Bash shell มาตรฐานบน Mac OS X