如果我的文件包含如下数据,我将如何根据第三列中的数字对数据进行排序?
前两列之间的空格是不制表符分隔,但有一些空格。第二列和第三列之间的空格根据数字的大小而变化。
另请注意,第二列的某些数据中有空格(如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
答案 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
字段由空格分隔。