2013-05-16 3 views
1

Input FileСортировка данных в формате CSV по нескольким столбцам

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 

Logic: Первый сорт реверс по 4-й колонке, а затем сортировать реверс по 6-й колонке

Я пробовал следующее, но не работал

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

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

Вы хотите отсортировать 2-й или 6-й столбец после сортировки 4-го? – speakr

+0

Сортировка 6-й колонки после 4-го ... – Debaditya

+0

http://theunixshell.blogspot.com/2012/12/sort-based-on-column-and-characters.html – Vijay

ответ

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 
+0

Спасибо ..... :) – Debaditya

3

Вы можете быть заинтересованы в решении Perl:

print join(',', @$_), "\n" for 
sort { $b->[3] <=> $a->[3] or $b->[5] <=> $a->[5] } 
map { chomp; [ split /,/ ] } <>; 
+0

Спасибо ... ... :) – Debaditya

Смежные вопросы