如果我创建包含以下行的文本文件:
drawableLeft
并执行>TESTTEXT_10000000
>TESTTEXT_1000000
>TESTTEXT_10000002
>TESTTEXT_10000001
,我的输出是
sort myfile
但是,如果我将/ 1和/ 2附加到我的行,则排序输出会发生巨大变化,我不知道为什么。
输入:
>TESTTEXT_1000000
>TESTTEXT_10000000
>TESTTEXT_10000001
>TESTTEXT_10000002
输出:
>TESTTEXT_10000000/1
>TESTTEXT_1000000/1
>TESTTEXT_10000002/1
>TESTTEXT_10000001/1
输入:
>TESTTEXT_10000000/1
>TESTTEXT_1000000/1
>TESTTEXT_10000001/1
>TESTTEXT_10000002/1
输出:
>TESTTEXT_10000000/2
>TESTTEXT_1000000/2
>TESTTEXT_10000002/2
>TESTTEXT_10000001/2
正斜线是否被认为是分离器?使用--field-sperator并没有改变行为。如果是这样,为什么在1000002/2和1000002/2条目之间是1000000/2?使用人类排序,数字排序或其他选项从未带来一致性。任何人都可以帮助我吗?
:编辑:
因为它似乎是相关的,考虑到答案,这台机器上LC_ALL的值是>TESTTEXT_10000000/2
>TESTTEXT_10000001/2
>TESTTEXT_1000000/2
>TESTTEXT_10000002/2
答案 0 :(得分:3)
/
位于您的语言区域中的0
之前。使用LC_ALL=C
或其他语言环境将不会改变任何内容。
在您的使用案例中,您可以正确使用-V
版本:
sort -V myfile
备选方案是否可以指定要排序的分隔符和键:
sort -t/ -k1,1 myfile