在bash中将1排序到10之前

在bash中将1排序到10之前,bash,sorting,Bash,Sorting,我在一个的特定列上进行数字排序用以下代码分隔文件: sort -k3n file 但数字10和11排序在1之前。如何解决这个问题?应该使用-n选项。你能不能检查一下它是否没有输出你想要的订单 echo -e "1\n10\n11\n2"|sort -n 如果您的字段不是用空格分隔的,您可以使用--field separator或-t选项,如下所示: sort -k3n -t\; file 请给我举一个输入和输出文件的例子。您确定要排序的数字是每行的第三个字符吗?你能提供一些示例数据吗?在我

我在一个
的特定列上进行数字排序用以下代码分隔文件:

sort -k3n file

但数字10和11排序在1之前。如何解决这个问题?

应该使用-n选项。你能不能检查一下它是否没有输出你想要的订单

echo -e "1\n10\n11\n2"|sort -n

如果您的字段不是用空格分隔的,您可以使用
--field separator
-t
选项,如下所示:

sort -k3n -t\; file

请给我举一个输入和输出文件的例子。您确定要排序的数字是每行的第三个字符吗?你能提供一些示例数据吗?在我这边效果很好。您确定列编号中没有键入错误或排序无法识别的奇怪分隔符吗?文件为“;”分开。但不适用于我,也适用于一般数字排序,你应该在问题中提到:)它必须;)此示例不使用多个用分号分隔的字段;)@g256:您可能还需要指定排序只考虑一个字段:
sort-k3,3n-t';'
@Dennis Williamson:事实上问题有点复杂,因为我用“
sort-k 1,1-k 3,3n-t\file
”沿着两列(第一列按字母顺序)排序,似乎有效。@g256:这就是为什么我说“(一次)”的原因。例如,如果有第四列,并且您没有指定停止(
,3
)然后,第四列(以及后续列)将包含在排序条件中。