2013-04-08 3 views
1

Итак, я видел здесь много вопросов о сортировке, и я надеялся, что кто-то сможет очистить мою. У меня есть файл, который выглядит следующим образом:Сортировка в файле по столбцам Linux

data dd 0.0 96 157 KL 71 X 6947 
data fb 0.0 11 3R2 HD 13 1 1850 
data bx 0.0 14 352 FG 12 X 4810 
data bh 0.0 13 3GF FH 1T 1 6840 
data fb 0.0 11 3R2 HD 13 1 1325 
etc. 

Я хочу, чтобы отсортировать файл по 8-й и 9-й строки, так что выход заключается в следующем:

data bx 0.0 14 352 FG 12 X 4810 
data dd 0.0 96 157 KL 71 X 6947 
data fb 0.0 11 3R2 HD 13 1 1325 
data fb 0.0 11 3R2 HD 13 1 1850 
data bh 0.0 13 3GF FH 1T 1 6840 
etc. 

Я попытался

рода -n -k7 -k8 файл> NewFile

Но сортирует его только это много:

data dd 0.0 96 157 KL 71 X 6947 
data bx 0.0 14 352 FG 12 X 4810 
data fb 0.0 11 3R2 HD 13 1 1850 
data bh 0.0 13 3GF FH 1T 1 6840 
data fb 0.0 11 3R2 HD 13 1 1325 
etc. 

Так что я пробовал:

> sort -n -k8 -k9 file > newfile 

Но это только делает его хуже

data dd 0.0 96 157 ZL 71 P 69412217 
data fb 0.0 11 3R2 HX 13 1 185135150 
data bx 0.0 14 352 FG 12 X 4810 
data bh 0.0 13 3GF FH 1T 1 6840 
data fb 0.0 11 3R2 HY 13 L 132321355 
etc. 

Я также попробовать:

сортировать -n -k8,9 файл> NewFile

Но это не выглядело надежным, потому что оно было л.д. сделать несколько правильно подряд, а потом бросить в некоторых случайных парней:

data dd 0.0 96 157 KL 71 X 6947 
data bx 0.0 14 352 FG 12 26 443810 
data fb 0.0 11 3R2 HD 13 1 1850 
data bh 0.0 13 3GF FH 1T 1 6840 
data bx 0.0 14 352 FG 12 2 465310 
data fb 0.0 11 3R2 HD 13 1 1325 
etc. 

Что это такое, что я делаю неправильно здесь?

ответ

2

Как об этом:

[[email protected] ~]$ sort -n -k8,8 -k9,9 tos 

data bx 0.0 14 352 FG 12 X 4810 
data dd 0.0 96 157 KL 71 X 6947 
data fb 0.0 11 3R2 HD 13 1 1325 
data fb 0.0 11 3R2 HD 13 1 1850 
data bh 0.0 13 3GF FH 1T 1 6840 

Это определяет восьмое поле в качестве первичного ключа и 9 как вторичный.

+0

Большое спасибо! Теперь, одна вещь, с которой мне трудно было понять на странице руководства, - почему вы должны указывать от 8 до 8 с -k8,8? Я просто чувствую, что это немного придирчиво/избыточно? – Stephopolis

+1

@Stephopolis Это указать с начала 8-го, до конца 8-го. Если вы опустите конец 8, он будет считать «до конца строки». – cnicutar

+0

Ах! Я вижу, это объясняет, что я вижу. Опять же, большое спасибо. – Stephopolis

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