如何使用下划线作为字段分隔符使 unix 排序正常工作?

如何使用下划线作为字段分隔符使 unix 排序正常工作?

当我对foo和进行排序时foo1,我希望foo它们排在第一位,这在 unix 中通常就是发生的情况sort

$ echo -e "foo1\nfoo" | sort
foo
foo1

但是当我添加下划线并使用-t-k选项时,它不会产生相同的排序顺序。

$ echo -e "foo1_3\nfoo_3" | sort -t_ -k1
foo1_3
foo_3

foo_3使出现在 之前应使用的正确选项集是什么foo1_3?我使用的LC_COLLATE=C是 Ubuntu 14.04。

答案1

使用

echo -e "foo1_3\nfoo_3" | sort -t_ -k1,1

正如排序手册所述

`-k POS1[,POS2]' `--key=POS1[,POS2]'
    Specify a sort field that consists of the part of the line between
    POS1 and POS2 (or the end of the line, if POS2 is omitted),
    _inclusive_.

相关内容