Bash: sort numbers with exponents

2019-03-17 21:02发布

问题:

I was trying to sort one file with numeric values like this:

414e-05
435e-05
0.5361
0.7278
0.1341
0.9592
0.2664

With sort all the numers get sorted except for the ones with the exponent, is there some way for sort function to evaluate this expression?

回答1:

If your version of the sort command is new enough, it should support the -g option (or --general-numeric-sort) if you like your options long). It is described like this in the info manual:

Sort numerically, using the standard C function strtod to convert a prefix of each line to a double-precision floating point number. This allows floating point numbers to be specified in scientific notation, like '1.0e-34' and '10e100'.



回答2:

 

perl -e 'print sort { $a<=>$b } <>' < input-file


回答3:

If you don't have sort -g, an alternative you can get is scisort.