根据第一列以数字方式排序

时间:2017-08-31 09:55:46

标签: linux bash sorting

我有一个tsv分隔文件,我尝试排序。 我使用function以数字方式对第一列进行排序。

但我得到的结果如下,这不是我想要的:

sort -k1,1n,

预期产出:

    061     data1
    2305    data2
    4080    data3
    9251    data4
    11844   data5
    238 data6
    264 data7
    33940   data8
    439 data9
    5640    otherdata
    682 help
    1264    moredata

4 个答案:

答案 0 :(得分:0)

如何使用:

sort -n  Input_file

或者您需要在值之间保持相等的空格,然后跟随可以帮助您。

sort -n  Input_file | awk '{$1=$1} 1' OFS="\t"

OR

sort -n  Input_file | column -t

答案 1 :(得分:0)

尝试使用enctype="multipart/form-data"作为字段分隔符:

$'\t'

答案 2 :(得分:0)

sort也从stdin和命令行读取。因此,如果您有文件,您可以:

sort < file
# or
sort file

如果您想根据第一列进行排序,您可以:

sort -k1 < file

但是,如果它确实会影响输出,因为默认情况下它并不关心数字顺序。因此,您应该添加-n选项:

  -n, --numeric-sort          compare according to string numerical value

并且这样做:

sort -k1 -n < file

输出:

061     data1
238 data6
264 data7
439 data9
682 help
1264    moredata
2305    data2
4080    data3
5640    otherdata
9251    data4
11844   data5
33940   data8

如果您提供-r,则按相反的顺序打印:

33940   data8
11844   data5
9251    data4
5640    otherdata
4080    data3
2305    data2
1264    moredata
682 help
439 data9
264 data7
238 data6
061     data1

答案 3 :(得分:0)

sort -k1 -n -t $&#39; \ t&#39; input_file.tsv