bash:用数字sortingstring

我经常想要对string进行sorting,以便在sorting例如abc_2, abc_1, abc_10 ,结果是abc_1, abc_2, abc_10 。 我所看到的每一种sorting机制都被sorting为abc_1, abc_10, abc_2 ,它们是从左边开始逐个字符的。

有没有任何有效的方法来获得我想要的结果? 看每一个angular色,确定它是否是一个数字,从随后的数字中构build一个子串,并将其作为一个数字进行sorting的想法,太惊人了。

没有大胡子* nix大师实现了一个替代版本的sort --sensible_numerical选项?

3 Solutions collect form web for “bash:用数字sortingstring”

执行此操作

 sort -t _ -k 2 -g data.file 
  • -t分离器
  • -k键/列
  • -g一般数字sorting

我认为这是一个GNU扩展sort ,但你正在寻找--version-sort (或-V )选项:

 $ printf "prefix%d\n" $(seq 10 -3 1) prefix10 prefix7 prefix4 prefix1 $ printf "prefix%d\n" $(seq 10 -3 1) | sort prefix1 prefix10 prefix4 prefix7 $ printf "prefix%d\n" $(seq 10 -3 1) | sort --version-sort prefix1 prefix4 prefix7 prefix10 

https://www.gnu.org/software/coreutils/manual/html_node/sort-invocation.html

尝试这个

 $ cat a.txt abc_1 abc_4 abc_2 abc_10 abc_5 $ sort -V a.txt abc_1 abc_2 abc_4 abc_5 abc_10 
  • Pythonsorting - 对象列表
  • 使用jQuery按字母顺序排列选项元素
  • sortingJava集合
  • 编写一个程序,从10亿个数字中找出100个最大的数字
  • Underscore:基于多个属性的sortBy()
  • 插入数字到有序数组中的有效方法?
  • 通过对象属性对Ruby中的对象数组进行sorting?
  • 在C#中对IList进行sorting
  • 如何用lambdasorting?
  • 在一个类私有函数使用PHP中的usort
  • sortingObservableCollection <string> C#