AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 677717
Accepted
user495498
user495498
Asked: 2021-11-16 19:15:36 +0800 CST2021-11-16 19:15:36 +0800 CST 2021-11-16 19:15:36 +0800 CST

“sort -n”和“sort -g”有什么区别?

  • 772

-n这两个排序选项和有什么区别-g?

有太多细节但没有足够的文档有点令人困惑。

sort numeric-data
  • 1 1 个回答
  • 278 Views

1 个回答

  • Voted
  1. Best Answer
    Greenonline
    2021-11-16T19:57:27+08:002021-11-16T19:57:27+08:00

    TL;博士

    虽然-n将对简单的浮点数进行排序,例如1.234,该-g选项处理范围更广的数字格式,但速度较慢。

    也是-gPOSIX 规范的 GNU 扩展。


    从man sort,相关部分是:

         -g, --general-numeric-sort, --sort=general-numeric
                 Sort by general numerical value.  As opposed to -n, this option
                 handles general floating points.  It has a more permissive format
                 than that allowed by -n but it has a significant performance
                 drawback.
    
    ...
    
         -n, --numeric-sort, --sort=numeric
                 Sort fields numerically by arithmetic value.  Fields are supposed
                 to have optional blanks in the beginning, an optional minus sign,
                 zero or more digits (including decimal point and possible thou-
                 sand separators).
    
    ...
    
    STANDARDS
         The sort utility is compliant with the IEEE Std 1003.1-2008 (``POSIX.1'')
         specification.
    
         The flags [-ghRMSsTVz] are extensions to the POSIX specification.
    
    ...
    
    NOTES
    
    ...
    
         When sorting by arithmetic value, using -n results in much better perfor-
         mance than -g so its use is encouraged whenever possible.
    

    但是,完整的文档由info而不是提供man。

    从7.1 sort: Sort text files开始,描述/区分更加清晰:

    ‘-g’

    ‘--general-numeric-sort’

    ‘--sort=general-numeric’

    按数字排序,将每行的前缀转换为长双精度浮点数。请参阅浮点数。不要报告上溢、下溢或转换错误。使用以下整理顺序:

    • 不以数字开头的行(都被认为是相等的)。
    • NaN(“非数字”值,在 IEEE 浮点算术中)以一致但与机器相关的顺序。
    • 负无穷大。
    • 以数字升序排列的有限数字(- 0和 + 0相等)。
    • 加上无穷大。

    只有在别无选择时才使用此选项;它比--numeric-sort( -n) 慢得多,并且在转换为浮点数时可能会丢失信息。

    您可以使用此选项对前缀为 ' 0x' 或 ' 0X' 的十六进制数字进行排序,其中这些数字不是固定宽度或大小写不同。但是,对于一致大小写的十六进制数字,并用 ' ' 填充0到一致的宽度,标准的字典排序会更快。

    ...

    ‘-n’

    ‘--numeric-sort’

    ‘--sort=numeric’

    按数字排序。数字从每一行开始,由可选的空格、可选的 ' -' 符号和零个或多个可能由千位分隔符分隔的数字组成,可选后跟一个小数点字符和零个或多个数字。空号被视为“ 0”。LC_NUMERIC语言环境指定小数点字符和千位分隔符。默认情况下,空格是空格或制表符,但LC_CTYPE语言环境可以更改它。

    比较是准确的;没有舍入误差。

    既不识别前导 ' +' 也不识别指数符号。要以数字方式比较此类字符串,请使用--general-numeric-sort ( -g) 选项。


    快速演示:

    $ printf '%s\n' 0.1 10 1e-2 | sort -n
    0.1
    1e-2
    10
    
    $ printf '%s\n' 0.1 10 1e-2 | sort -g
    1e-2
    0.1
    10
    
    • 5

相关问题

  • 数字排序无法正确排序文件

  • mit-scheme中不准确的乘法[关闭]

  • 如何对文件中每个日期的行数进行排序?

  • 列出根据特定内容行排序的文件

  • 读取带有单词的文本文件及其出现次数和排序的打印输出

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve