sfsort sorts the input by absolute value.

It takes either floating-point or complex input. Here is a quick example:

bash$sfspike n1=10 | sfnoise rep=y seed=2016 > random.rsf bash$ < random.rsf sfdisfil
0:       -0.3485      -0.3108       0.7928      0.01292      -0.5301
5:       -0.4556      -0.2901      -0.7167       -1.209      -0.2871
bash$< random.rsf sfsort | sfdisfil 0: 1.209 0.7928 0.7167 0.5301 0.4556 5: 0.3485 0.3108 0.2901 0.2871 0.01292  To sort in reverse (ascending) order, use ascmode=y:  bash$ < random.rsf sfsort ascmode=y | sfdisfil
0:       0.01292       0.2871       0.2901       0.3108       0.3485
5:        0.4556       0.5301       0.7167       0.7928        1.209


sfsort tries to perform sorting in memory but, if the input is too large, it switches to slower out-of-core operations. To control the amount of available memory, use memsize= parameter.

If the input is multidimensional, and you want to sort data only up to a certain dimension, use dim= parameter. In the following example, each of the two rows is sorted independently:

bash\$ < random.rsf sfput n1=5 n2=2 | sfsort dim=1 | sfdisfil
0:        0.7928       0.5301       0.3485       0.3108      0.01292
5:         1.209       0.7167       0.4556       0.2901       0.2871


sfsort was contributed to Madagascar by Gilles Hennenfent and Henryk Modzelewski from SLIM, UBC. They provide the following test example in slim/slimUserManual/sfsort: