2013-06-14 4 views
1

Как вы сортируете файл по последнему номеру в строке?Unix: сортировать по последнему номеру строки

Предполагая, что последний символ каждой строки является числом. ВХОД:

facebook.com/pageA,2,11,11 
facebook.com/pageB,0,0,20 
facebook.com/pageC,0,0,6 
facebook.com/pageD,1,22,239 

Желаемая Выход:

facebook.com/pageC,0,0,6 
facebook.com/pageA,2,11,11 
facebook.com/pageB,0,0,20 
facebook.com/pageD,1,22,239 

Помощь ??

+0

Предположим, что линии имеют одинаковое количество разделенных запятыми столбцов. Вы можете прочитать 'man sort', чтобы узнать, как указать разделитель и как сортировать численно. – Jokester

+0

Ваш пример не соответствует вашему вопросу. Который вы хотите: сортировать по последнему _digit_ или последнему _number_? –

+0

последний номер .. но в чем разница между цифрой и цифрой? они имеют в виду то же самое? – user1899415

ответ

5

Вы можете использовать sort.

sort -n -t, -k4 INPUT 
+0

Предполагаемый вход имеет 4 столбца. – falsetru

2

Используйте rev отменить каждую строку, затем сортируют, а затем повторно Реверс:

rev < $file | sort | rev 
+0

Вздох ... пример OP не соответствует вопросу. Я ответил на вопрос, а не на пример. По-видимому, целью является сортировка по последнему _number_ на линии, а не последнему _digit_ на линии. Так трудно дать людям то, что они хотят, а не то, что они просят. –

+0

Это не дает желаемого выхода OP, потому что последнее число обращено и сравнивается. OP набрал «цифру», но он действительно хочет номер. – falsetru

+1

Справа. Прочтите мой комментарий, чуть выше вашего. –

2

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

awk '{print($NF,$0)}' FS=, OFS=, inputFile | sort -t, -nk1 | cut -f2- -d, 
Смежные вопросы