Text-Processing
如何按第三列中的數字對數據進行排序?
如果我有一個包含如下數據的文件,我將如何根據第 3 列中的數字對數據進行排序?前兩列之間的空格不是製表符分隔的,而是一些空格。第二列和第三列之間的間距因數字的大小而異。另請注意,第二列的某些數據中有空格(例如
lp25( plasmid
between(
andp
),而其他則沒有空格(例如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
試試這個:
sort -n --k3 <file>
例如:
$ sort -n -k3 test HELIX cp9(plasmid 9586 bp DNA helix 29-AUG-2011 HELIX lp25(plasmid 24437 bp RNA linear 29-AUG-2011 HELIX lp28-1(plasmid 25455 bp DNA linear 29-AUG-2011 HELIX chromosome 911724 bp DNA plasmid 29-AUG-2011
-n
按數值排序,並-k3
選擇第 3 列。
sed $'s/\t/ /g' my_file | tr -s " " | sort -t" " -k 3
第一個
sed
命令,用單個空格替換所有製表符。tr -s " "
表示將多個連續的空白字元壓縮為一個space
字元。如果需要數字排序,您可以使用
sed $'s/\t/ /g' my_file | tr -s " " | sort -t" " -n -k 3
當然,這並沒有解決第二列的不規則性,我只是注意到了。因此編輯。在這種情況下,我有一個問題。在下面的行中,
HELIX lp28-1(plasmid 25455 bp DNA linear 29-AUG-2011 ^ ^ 1 2
這些是分隔符
1
和2
製表符還是空格?