문제

I am trying to sort a table based on the first value from smallest to largest with the gnu-coreutils sort command.

My table looks something like this:

file.txt

100,0.8,0.323, ... some more data
2,0.323,0,323, ...
4, ...
53, ...
.
.
121, ...

I have tried doing the following:

sort -n -k 1 file.txt

but I get things like...

10,0,10,10
100,9,1,10
101,9,2,11
102,9,3,12
103,9,4,13
104,9,5,14
105,9,6,15
106,9,7,16
107,9,8,17
108,9,9,18
21,1,10,11
32,2,10,12
43,3,10,13
54,4,10,14

I want the logical numerical order.

Ted.

도움이 되었습니까?

해결책

The correct invocation of sort might look like

$ sort -n -t , -k 1,1 file.txt

Explanation:

  • -n sort numerically
  • -t , comma is field separator
  • -k 1,1 sort on the first field
  • file.txt input file

Invoking the above given program gives

10,0,10,10
21,1,10,11
32,2,10,12
43,3,10,13
54,4,10,14
100,9,1,10
101,9,2,11
102,9,3,12
103,9,4,13
104,9,5,14
105,9,6,15
106,9,7,16
107,9,8,17
108,9,9,18

When sorting by fields it is very handy to use --debug option, just to make sure that sort works as expected.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top