sort
提供两种数字排序.这是来自手册页:
-g, --general-numeric-sort compare according to general numerical value -n, --numeric-sort compare according to string numerical value
有什么不同?
一般数字排序将数字作为浮点数进行比较,这允许科学记数法,例如1.234E10,但是更慢并且受到舍入误差(1.2345678可能在1.2345679之后),数字排序只是一个常规的字母排序,知道10在9之后.
请参阅http://www.gnu.org/software/coreutils/manual/html_node/sort-invocation.html
'-g'' - general-numeric-sort'' - sort = general-numeric'以数字方式排序,使用标准C函数strtod将每行的前缀转换为双精度浮点数.这允许以科学计数法指定浮点数,如1.0e-34和10e100.LC_NUMERIC语言环境确定小数点字符.不要报告溢出,下溢或转换错误.使用以下整理顺序:不以数字开头的行(全部视为相等).NaNs(IEEE浮点算术中的"非数字"值),以一致但依赖于机器的顺序.减无限.有限数字按升序排列(-0和+0相等).加上无限.
只有在没有其他选择时才使用此选项; 它比--numeric-sort(-n)慢得多,并且在转换为浮点时可能会丢失信息.
'-n'' - 数字排序'' - sort = numeric'按数字排序.数字从每一行开始,由可选空格,可选的" - "符号和零个或多个数字组成,可能由千位分隔符分隔,可选地后跟小数点字符和零个或多个数字.空数被视为"0".LC_NUMERIC语言环境指定小数点字符和千位分隔符.默认情况下,空白是空格或制表符,但LC_CTYPE语言环境可以更改此选项.
比较准确; 没有舍入错误.
无法识别前导"+"和指数表示法.要以数字方式比较这些字符串,请使用--general-numeric-sort(-g)选项.
你应该小心你的语言环境.例如,您可能打算对浮点数(如2.2)进行排序,而您的语言环境可能需要使用逗号(如2,2).
正如此论坛中所报告的那样,使用-n或-g标志可能会导致错误的结果.
在我的情况下,我使用:
LC_ALL=C sort -k 6,6n file
为了对包含以下内容的第6列进行排序:
2.5 3.7 1.4
为了获得
1.4 2.5 3.7