如何按第三列中的数字对数据进行排序?

时间:2016-02-03 22:23:29

标签: linux shell unix text

如果我的文件包含如下数据,我将如何根据第三列中的数字对数据进行排序?

前两列之间的空格是制表符分隔,但有一些空格。第二列和第三列之间的空格根据数字的大小而变化。

另请注意,第二列的某些数据中有空格(如lp25( plasmid(之间的p),而其他数据则没有空格(如chromosome )。

HELIX       lp25(plasmid           24437 bp    RNA     linear       29-AUG-2011
HELIX       cp9(plasmid             9586 bp    DNA     helix       29-AUG-2011
HELIX       lp28-1(plasmid         25455 bp    DNA     linear       29-AUG-2011
HELIX       chromosome            911724 bp    DNA     plasmid       29-AUG-2011

1 个答案:

答案 0 :(得分:3)

你走了:

sort -n -k 3 test.txt

来自man sort

-n, --numeric-sort          compare according to string numerical value
-k, --key=KEYDEF          sort via a key; KEYDEF gives location and type
     

KEYDEF是F [.C] [OPTS] [,F [.C] [OPTS]]的开始和停止位置,其中F是a   字段编号和C字段中的字符位置;两者都是原点1和   停止位置默认为线的结束。如果-t和-b都不在   效果,字段中的字符从前一个开始计算   空白。 OPTS是一个或多个单字母排序选项[bdfgiMhnRrV],   它覆盖该键的全局排序选项。如果没有给出密钥,请使用   整条线作为关键。

也很有趣:

  

-t, - field-separator = SEP使用SEP代替非空白到空白转换

告诉我们F字段由空格分隔。