gpt4 book ai didi

linux - Bash sort -nu 导致意外行为

转载 作者:太空宇宙 更新时间:2023-11-04 09:20:27 24 4
gpt4 key购买 nike

我的一个同事今天注意到 sort 命令有一些奇怪的行为,我想知道是否有人知道这个命令的输出是否是有意的?

给定文件:

ABC_22
ABC_43
ABC_1
ABC_1
ABC_43
ABC_10
ABC_123

我们希望使用数字排序对文件进行排序,并使其唯一,因此我们运行:

sort file.txt -nu

输出是:

ABC_22

现在,我们知道数字排序在这种情况下不起作用,因为行不是以数字开头的(没关系,这只是更大脚本的一部分),但我本以为会有更多的东西行:

ABC_1
ABC_10
ABC_123
ABC_22
ABC_43

有谁知道为什么不是这样?如果单独给出 -u 或 -n 选项,则排序会像预期的那样。

最佳答案

使用 -nan empty number is zero :

Sort numerically. The number begins each line and consists of optional blanks, an optional ‘-’ sign, and zero or more digits possibly separated by thousands separators, optionally followed by a decimal-point character and zero or more digits. An empty number is treated as ‘0’.

所有这些行的行首都有一个空数字,因此对于sort 的数字唯一性,它们都是零。如果每一行都以相同的数字开头,比如说 1,效果会是一样的。您应该明确指定包含数字的字段,或使用版本排序 (-V):

$ sort -Vu foo
ABC_1
ABC_10
ABC_22
ABC_43
ABC_123

关于linux - Bash sort -nu 导致意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42526860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com