请教一个 sort 命令的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
aliipay
V2EX    Linux

请教一个 sort 命令的问题

  •  
  •   aliipay Apr 17, 2018 4588 views
    This topic created in 2932 days ago, the information mentioned may be changed or developed.
    原始文件:
    # cat 2.txt
    r0:26
    r1:26
    r10:26
    r11:26
    r12:26
    r13:26
    r14:26

    排序结果:
    # cat 2.txt | sort -k1 -t ':'
    r0:26
    r10:26
    r11:26
    r12:26
    r1:26
    r13:26
    r14:26

    ------------

    r1:26 为何在 5 行? 直接 sort 和 sort -g 结果都一样,中间冒号是被忽略的?
    Supplement 1    Apr 18, 2018
    感谢#9 #10 提供的方法。
    已经搞清楚问题了,谢谢大家~~
    14 replies    2018-04-18 01:36:17 +08:00
    rwdy2008
        1
    rwdy2008  
       Apr 17, 2018 via iPhone
    看下异常行这个冒号是不是中文格式了
    aliipay
        2
    aliipay  
    OP
       Apr 17, 2018
    @rwdy2008 你复制粘贴试试就知道了,没什么卵用,再说如果是中文冒号插在中间是不是也很奇怪
    MeteorCat
        3
    MeteorCat  
       Apr 17, 2018 via Android
    是不是把 r 的 ascii 码也计算在里面变成 r 的 ascii+0 的 ascii 位数排序,试着剔除 r 开头看看
    bin456789
        4
    bin456789  
       Apr 17, 2018   1
    sed 's/^r//' 2.txt | sort -k1n -t ':' | sed 's/^/r/'

    勉强能用
    ant2017
        5
    ant2017  
       Apr 17, 2018   1
    cat 2.txt|sort -k 1.2n -t :
    jasonyang9
        6
    jasonyang9  
       Apr 17, 2018
    KEYDEF is F[.C][OPTS][,F[.C][OPTS]] for start and stop position, where F is a field number and C a character position in the field; both are origin 1, and the stop position defaults to the line's end. If neither -t nor -b is in effect, characters in a field are counted from the beginning of the preceding whitespace. OPTS is one or more single-letter ordering options [bdfgiMhnRrV], which over ride global ordering options for that key. If no key is given, use the entire line as the key.

    `man sort`中的这段看不懂,哪位能帮忙解释下并举几个例子??
    aliipay
        7
    aliipay  
    OP
       Apr 17, 2018
    @bin456789
    r 和冒号之间如果不是全数字你这个就无法跑了
    aliipay
        8
    aliipay  
    OP
       Apr 17, 2018
    @ant2017
    @bin456789
    @MeteorCat
    我的问题是 r1:26 为何在 5 行? 谢谢各位
    goreliu
        9
    goreliu  
       Apr 17, 2018   1
    把 LANG 设置成 C,不然 sort 会出现各种奇怪现象。

    % cat 2.txt | LANG=C sort -k1 -t ':'
    r0:26
    r10:26
    r11:26
    r12:26
    r13:26
    r14:26
    r1:26
    Lpl
        10
    Lpl  
       Apr 17, 2018   1
    https://stackoverflow.com/questions/6531674/linux-sort-unexpected-output?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

    这个回复说的挺好的,其实你的数据
    `
    r0:26 -> r026
    r10:26 -> r1026
    r11:26 -> r1226
    r12:26 -> ....
    r1:26
    r13:26
    r14:26
    `
    特殊字符会被忽略,然后按照字典序来进行排序
    goodryb
        11
    goodryb  
       Apr 17, 2018
    $cat 2.txt ;echo "----------" && cat 2.txt | sort -k1 -t ':'
    r0:26
    r1:26
    r10:26
    r11:26
    r12:26
    r13:26
    r14:26
    ----------
    r0:26
    r10:26
    r11:26
    r12:26
    r13:26
    r14:26
    r1:26


    为啥我执行的结果和楼主不一样呢
    iwishing
        12
    iwishing  
       Apr 17, 2018
    字典顺序
    r1226
    r126
    r1326
    guoer
        13
    guoer  
       Apr 18, 2018
    少了个-n ?
    aliipay
        14
    aliipay  
    OP
       Apr 18, 2018
    @goodryb 按#9 #10 的方法,考虑是否已经默认设置了 LANG 或者 LC_ALL,我的 LANG 默认是 en_US.UTF-8
    About     Help     Advertise     Blog     API     FAQ     Solana     2860 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 51ms UTC 15:33 PVG 23:33 LAX 08:33 JFK 11:33
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86