使用常规字符串,如果第一个字段匹配,我们按下一个字段排序,依此类推,事情就像我们期望的那样。
echo -e 'a c\na b' | sort #regular string sort
a b
a c
对于数字,如果第一个字段匹配,我们......在后续字段中切换到字符串排序?为什么?我认为它会用数字比较每个字段。
echo -e '1 22\n1 3' | sort -n #numeric sort
1 22
1 3
仅供参考,在RHEL 5.5上使用sort(GNU coreutils)5.97。
我在这里缺少什么?我知道我可以使用-k来选择我想要排序的字段,但这大大降低了允许输入的灵活性,因为它要求用户知道字段的数量。
谢谢!
答案 0 :(得分:1)
当您指定-n
没有其他选项时发生的事情是整条线传递给"将字符串转换为数字"例程,它转换行开头的数字并忽略其余的数字。根本没有拆分成字段。
你的第一个例子,没有-n
,也在进行全线比较。它没有比较" a"到" a"那么" b"到" c"。它正在比较" a b"到" c"。