Text-Processing
如何排序以類似於人類的排序順序向我顯示結果?
在文件的第一個欄位上執行排序命令,
sort -k1,1 file.txt
如下所示:1,2,3 2,1,1 10,2,1
給我:
1,2,3 10,2,1 2,1,1
代替:
1,2,3 2,1,1 10,2,1
我不想在 2 之前 10。有什麼辦法可以做到這一點?
如中所述
man sort
:-n, --numeric-sort compare according to string numerical value
所以你要:
$ sort -nk1,1 file 1,2,3 2,1,1 10,2,1
另請注意,預設情況下,欄位以空白分隔,因此該文件中的那些行只有一個欄位。例如,第一行的第一個欄位是
1,2,3
, not1
。您需要添加-t ,
欄位,-separated
:sort -t, -nk1,1 file
使用
-n
,sort
僅考慮在排序鍵開頭形成有效數字的字元序列(忽略前導空格)。對於第一行,-t,
根據sort
實現和語言環境,不帶 的1,2,3
將被視為1
或1.2
(當使用者的小數分隔符為時,
)或123
(當使用者的千位分隔符為,
並sort
忽略任何出現時)。