set LC_ALL=C; cat all.msf | sort -k 2 -n
y01_FA 2.3574492500 .5149928333
y03_FA 2.7007018333 .6276878333
y04_FA 2.2736573333 .4934251666
y06_FA 2.2188285000 .5140117500
y09_FA 2.4416411666 .5374885000
y10_FA 2.1813674166 .4532854166
y11_FA 2.0237245000 .4157899166
y02_FA 3.0492390833 .7670747500
y05_FA 3.0221233333 .7417060000
y07_FA 3.0134415833 .7737685833
y08_FA 3.0019868333 .7800315000
y12_FA 3.1669953333 .8578153333


Am I using set in the right way?
If yes, the weird is still here.


On Tue, Feb 28, 2012 at 11:22, Stephen Smith <[log in to unmask]> wrote:
This is very  weird - I have the same version of sort on my mactop and it seems fine.  

The sort man page says

   *** WARNING *** The locale specified by the environment affects sort order.  Set LC_ALL=C to get  the
       traditional sort order that uses native byte values.

Might this be the answer??

Cheers.



On 28 Feb 2012, at 08:18, Christophe Bedetti wrote:

Hi Rolf and Steve,

My OS is MAS OS X 10.5.8
sort --version : sort (GNU coreutils) 5.93

Here is the result of the differents command line.

cat all.msf | sort -k 3 -n | head -n 1 | awk '{print $1}'
  y01_FA
cat all.msf | sort -t ' ' -k 2 -n | head -n 1 | awk '{print $1}'
  y01_FA
cat all.msf | sort -k 2 | head -n 1 | awk '{print $1}'
  y11_FA

When I look at the ouptut of sort, my shell orders only the unit number.
It doesn't use the decimal part.
cat all.msf | sort -k 2 -n
y01_FA 2.3574492500 .5149928333
y03_FA 2.7007018333 .6276878333
y04_FA 2.2736573333 .4934251666
y06_FA 2.2188285000 .5140117500
y09_FA 2.4416411666 .5374885000
y10_FA 2.1813674166 .4532854166
y11_FA 2.0237245000 .4157899166
y02_FA 3.0492390833 .7670747500
y05_FA 3.0221233333 .7417060000
y07_FA 3.0134415833 .7737685833
y08_FA 3.0019868333 .7800315000
y12_FA 3.1669953333 .8578153333


It's all good without the -n
cat all.msf | sort -k 2
y11_FA 2.0237245000 .4157899166
y10_FA 2.1813674166 .4532854166
y06_FA 2.2188285000 .5140117500
y04_FA 2.2736573333 .4934251666
y01_FA 2.3574492500 .5149928333
y09_FA 2.4416411666 .5374885000
y03_FA 2.7007018333 .6276878333
y08_FA 3.0019868333 .7800315000
y07_FA 3.0134415833 .7737685833
y05_FA 3.0221233333 .7417060000
y02_FA 3.0492390833 .7670747500
y12_FA 3.1669953333 .8578153333


Just to be sure, I check all.msf and it doesn't seem to have any funny characters in it

od -c -b all.msf
0000000    y   0   1   _   F   A       2   .   3   5   7   4   4   9   2
          171 060 061 137 106 101 040 062 056 063 065 067 064 064 071 062
0000020    5   0   0       .   5   1   4   9   9   2   8   3   3   3  \n
          065 060 060 040 056 065 061 064 071 071 062 070 063 063 063 012
0000040    y   0   2   _   F   A       3   .   0   4   9   2   3   9   0
          171 060 062 137 106 101 040 063 056 060 064 071 062 063 071 060
0000060    8   3   3       .   7   6   7   0   7   4   7   5   0   0  \n
          070 063 063 040 056 067 066 067 060 067 064 067 065 060 060 012
0000100    y   0   3   _   F   A       2   .   7   0   0   7   0   1   8
          171 060 063 137 106 101 040 062 056 067 060 060 067 060 061 070
0000120    3   3   3       .   6   2   7   6   8   7   8   3   3   3  \n
          063 063 063 040 056 066 062 067 066 070 067 070 063 063 063 012
0000140    y   0   4   _   F   A       2   .   2   7   3   6   5   7   3
          171 060 064 137 106 101 040 062 056 062 067 063 066 065 067 063
0000160    3   3   3       .   4   9   3   4   2   5   1   6   6   6  \n
          063 063 063 040 056 064 071 063 064 062 065 061 066 066 066 012
0000200    y   0   5   _   F   A       3   .   0   2   2   1   2   3   3
          171 060 065 137 106 101 040 063 056 060 062 062 061 062 063 063
0000220    3   3   3       .   7   4   1   7   0   6   0   0   0   0  \n
          063 063 063 040 056 067 064 061 067 060 066 060 060 060 060 012
0000240    y   0   6   _   F   A       2   .   2   1   8   8   2   8   5
          171 060 066 137 106 101 040 062 056 062 061 070 070 062 070 065
0000260    0   0   0       .   5   1   4   0   1   1   7   5   0   0  \n
          060 060 060 040 056 065 061 064 060 061 061 067 065 060 060 012
0000300    y   0   7   _   F   A       3   .   0   1   3   4   4   1   5
          171 060 067 137 106 101 040 063 056 060 061 063 064 064 061 065
0000320    8   3   3       .   7   7   3   7   6   8   5   8   3   3  \n
          070 063 063 040 056 067 067 063 067 066 070 065 070 063 063 012
0000340    y   0   8   _   F   A       3   .   0   0   1   9   8   6   8
          171 060 070 137 106 101 040 063 056 060 060 061 071 070 066 070
0000360    3   3   3       .   7   8   0   0   3   1   5   0   0   0  \n
          063 063 063 040 056 067 070 060 060 063 061 065 060 060 060 012
0000400    y   0   9   _   F   A       2   .   4   4   1   6   4   1   1
          171 060 071 137 106 101 040 062 056 064 064 061 066 064 061 061
0000420    6   6   6       .   5   3   7   4   8   8   5   0   0   0  \n
          066 066 066 040 056 065 063 067 064 070 070 065 060 060 060 012
0000440    y   1   0   _   F   A       2   .   1   8   1   3   6   7   4
          171 061 060 137 106 101 040 062 056 061 070 061 063 066 067 064
0000460    1   6   6       .   4   5   3   2   8   5   4   1   6   6  \n
          061 066 066 040 056 064 065 063 062 070 065 064 061 066 066 012
0000500    y   1   1   _   F   A       2   .   0   2   3   7   2   4   5
          171 061 061 137 106 101 040 062 056 060 062 063 067 062 064 065
0000520    0   0   0       .   4   1   5   7   8   9   9   1   6   6  \n
          060 060 060 040 056 064 061 065 067 070 071 071 061 066 066 012
0000540    y   1   2   _   F   A       3   .   1   6   6   9   9   5   3
          171 061 062 137 106 101 040 063 056 061 066 066 071 071 065 063
0000560    3   3   3       .   8   5   7   8   1   5   3   3   3   3  \n
          063 063 063 040 056 070 065 067 070 061 065 063 063 063 063 012
0000600


sort with the -n option seems to not worked properly on my system.
I'm puzzled.

Sincerly,

Christophe


On Sun, Feb 26, 2012 at 12:40, Rolf A. Heckemann <[log in to unmask]> wrote:
Hi Christophe

The -n option to sort ensures numeric ordering (default is
alphabetic).  -k 2 specifies that you want to sort on the second field
(key).  The default field separator is a blank-to-nonblank-character
transition (at least for the sort found in GNU coreutils).  I suspect
that your shell regards the understroke as a blank character.
Therefore, your command tries to numerically sort a series of
identical character strings ("FA"), so it gives up and returns the
original ordering.  If my suspicion is correct, each of the following
should give you the result you want:

 cat all.msf | sort -k 3 -n | head -n 1 | awk '{print $1}'
 # specifies the correct field (key) on which to sort

 cat all.msf | sort -t ' ' -k 2 -n | head -n 1 | awk '{print $1}'
 # tells sort to use space as the field separator
 # (recommended if you generally have space-separated
 # values in your files)

 cat all.msf | sort -k 2 | head -n 1 | awk '{print $1}'
 # (the one you found to work correctly)
 # because when you sort alphabetically, it sorts on the entire
 # string from the specified key to the end of the line, so it
 # does not matter that each string starts with "FA".

Hope that helps

Rolf


On 24 February 2012 22:28, Christophe Bedetti
<[log in to unmask]> wrote:
> Hi FSL list,
>
> I was looking at the way the best target image is chosen during the step
> tbss_3_postreg when I use the -n option during the step tbss_2_reg.
> Here is my all.msf.
>
> cat all.msf
> y01_FA 2.3574492500 .5149928333
> y02_FA 3.0492390833 .7670747500
> y03_FA 2.7007018333 .6276878333
> y04_FA 2.2736573333 .4934251666
> y05_FA 3.0221233333 .7417060000
> y06_FA 2.2188285000 .5140117500
> y07_FA 3.0134415833 .7737685833
> y08_FA 3.0019868333 .7800315000
> y09_FA 2.4416411666 .5374885000
> y10_FA 2.1813674166 .4532854166
> y11_FA 2.0237245000 .4157899166
> y12_FA 3.1669953333 .8578153333
>
> cat all.msf | sort -k 2 -n | head -n 1 | awk '{print $1}'
> y01_FA
>
> Shouldn't be y11_FA the best image in my case?
> After searching a bit, I found that without the -n option of sort, the
> output is y11_FA.
>
> cat all.msf | sort -k 2 | head -n 1 | awk '{print $1}'
> y11_FA
>
> I'm not sure why.
> I don't understand what is the -n option here.
> Maybe the names of my subjects interfere with sort?
>
> Sincerly,
>
> Christophe
>



--
Rolf A Heckemann, MD PhD
Médecin chercheur
Fondation Neurodis
CERMEP - Imagerie du Vivant
Hôpital Neurologique Pierre Wertheimer
59 Boulevard Pinel
69003 Lyon
France



---------------------------------------------------------------------------
Stephen M. Smith, Professor of Biomedical Engineering
Associate Director,  Oxford University FMRIB Centre

FMRIB, JR Hospital, Headington, Oxford  OX3 9DU, UK
+44 (0) 1865 222726  (fax 222717)
[log in to unmask]    http://www.fmrib.ox.ac.uk/~steve
---------------------------------------------------------------------------