1

入力ファイル

1,A,SDF,24,55,55
2,T,AAS,22,12,32
3,TR,SS,14,19,69
4,DD,DD,14,59,39
5,SW,DD,14,39,59
6,SB,DS,12,26,126
7,QQ,SWD,12,19,199
8,QA,DD,12,17,167
9,AA,QQ,10,9,49

望ましい出力

1,A,SDF,24,55,55
2,T,AAS,22,12,32
3,TR,SS,14,19,69
5,SW,DD,14,39,59
4,DD,DD,14,59,39
7,QQ,SWD,12,19,199
8,QA,DD,12,17,167
6,SB,DS,12,26,126
9,AA,QQ,10,9,49

ロジック: 最初に 4 列目で逆方向に並べ替え、次に 6 列目で逆方向に並べ替えます

私は次のことを試しましたが、うまくいきませんでした

sort -t ',' -nrk 4,6 -s Input_file

sort -t ',' -k 4,4n -k 6,6n Input_file
4

2 に答える 2

4

私はこれを得た:

kent$  sort -nrt, -k4,4 -k6,6 file                                                                                                                                        
1,A,SDF,24,55,55
2,T,AAS,22,12,32
3,TR,SS,14,19,69
5,SW,DD,14,39,59
4,DD,DD,14,59,39
7,QQ,SWD,12,19,199
8,QA,DD,12,17,167
6,SB,DS,12,26,126
9,AA,QQ,10,9,49
于 2013-05-16T10:52:29.527 に答える
3

Perl ソリューションに興味があるかもしれません:

print join(',', @$_), "\n" for 
sort { $b->[3] <=> $a->[3] or $b->[5] <=> $a->[5] }
map { chomp; [ split /,/ ] } <>;
于 2013-05-16T11:50:35.490 に答える