[英]Sorting numbers with multiple decimals in bash
在bash
使用帶-n
選項的sort
不會給我預期的結果。
$ cat numbers | sort -n
1.0
1.1
1.11.4
1.15
1.3
1.3.3
1.4-p1
1.6.1
2.2.10
2.2.2
2.4
2.4.6
我嘗試使用-k1
, -k1.1n
等( -k1.3n
僅對從1
開始的數字獲得正確的順序)。 看來這里有一些我非常基本的東西......
這個版本號有-V
的特殊標志
$ sort -V numbers
1.0
1.1
1.3
1.3.3
1.4-p1
1.6.1
1.11.4
1.15
2.2.2
2.2.10
2.4
2.4.6
PS。 此選項在GNU Coreutils中可用,在其他實現中可能會丟失。
你需要-t。 用於指定'。'的標志 作為您的分隔符,多個鍵位置說明符處理逐漸更長/更深的數字。 我仍然不太確切地知道它是如何工作的,但是它有效......
sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n numbers
要么
cat numbers | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n
sort -g numbers
它會的。 根據排序手冊頁, -g
用於數字排序:
-g, - general-numeric-sort
根據一般數值進行比較
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.