2013-09-01 2 views
1

У меня есть большой файл данных, содержащий более тысячи записей. Я хотел бы отсортировать их, но сохранить исходные номера строк. Например,Unix: как отсортировать файл данных и сохранить исходные номера строк

1:100 
2:120 
3:10 
4:59 

Если первое число это номер строки, не сохраняется в файле данных, разделенный двоеточием от реального числа. Я хотел бы, чтобы отсортировать его и хранить номера строк, связанные с их оригинальными линиями, с выходом:

2:120 
1:100 
4:59 
3:10 

Если возможно, я хотел бы сделать это без создания другого файла, и нумерация их вручную не вариант для размера данных, который я использую.

+1

'sort -k = POS1, POS2' должно быть именно то, что вы ищете. Подробнее см. «Man sort». – paulsm4

ответ

2

Учитывая файл test.dat:

100 
120 
10 
59 

... командой:

$ cat -n test.dat | sort --key=2 -nr 
    2 120 
    1 100 
    4 59 
    3 10 

... дает вывод, что вы, кажется, ищет (хотя с полями, разделенными табуляцией , который легко изменяется при необходимости):

$ cat -n test.dat | sort --key=2 -nr | sed -e's/\t/:/' 
    2:120 
    1:100 
    4:59 
    3:10 
+0

Это именно то, что я искал! Спасибо и paulsm4 за команду «ключ». Я полностью забыл перевести этот вид во вторую колонку, и я чувствую себя немного глупо! –

+0

Рад помочь. Если этот ответ решает проблему для вас, отметьте ее как «принятую», чтобы другие не пришли к вашему вопросу, думая, что вы все еще нуждаетесь в решении. – Simon