【问题标题】:gnu/unix sort numerical only using first column?gnu/unix 仅使用第一列对数字进行排序?
【发布时间】:2014-07-17 20:08:00
【问题描述】:

对于常规字符串,如果第一个字段匹配,我们将按下一个字段排序,依此类推,一切都会按预期进行。

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 来选择我想要排序的字段,但这大大降低了允许输入的灵活性,因为它要求用户知道字段的数量。

谢谢!

【问题讨论】:

    标签: sorting unix field gnu numeric


    【解决方案1】:

    很遗憾你没有错过任何东西。这个看似简单的任务 - 将行拆分为字段,然后对它们中的所有进行数字排序 - unix 排序程序无法完成。您只需要弄清楚有多少列并将它们单独命名为键。

    当您指定-n 没有其他选项时发生的情况是整行被传递给“将字符串转换为数字”例程,该例程转换行首的数字并忽略其余部分。字段拆分根本没有完成。

    您的第一个示例,没有-n,也在进行整行比较。它不是将“a”与“a”进行比较,然后将“b”与“c”进行比较。它是将“a b”与“a c”进行比较。

    【讨论】:

      猜你喜欢
      • 2011-02-08
      • 2021-12-17
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-18
      • 1970-01-01
      相关资源
      最近更新 更多