Text-Processing

如何排序以類似於人類的排序順序向我顯示結果?

  • December 15, 2018

在文件的第一個欄位上執行排序命令,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, not 1。您需要添加-t ,欄位,-separated

sort -t, -nk1,1 file

使用-n,sort僅考慮在排序鍵開頭形成有效數字的字元序列(忽略前導空格)。對於第一行,-t,根據sort實現和語言環境,不帶 的1,2,3將被視為11.2(當使用者的小數分隔符為時,)或123(當使用者的千位分隔符為,sort忽略任何出現時)。

引用自:https://unix.stackexchange.com/questions/363012