2014-11-10 4 views
0

У меня есть таблица с несколькими столбцами Я хочу сортировать по 1-й колонке сначала, а затем по 2-й колонке. Я знаю, что это легко сделать для Excel, но как я могу это сделать с помощью awk или sed?Сортировка основана на первом столбце первого, затем второго столбца?

вход:

2 30 etc etc etc 
77 5 etc etc etc 
2 6 etc etc etc 
39 12 etc etc etc 

выход

2 6 etc etc etc 
2 30 etc etc etc 
39 12 etc etc etc 
77 5 etc etc etc 

Весь ряд должен следовать, как она сортируется. заблаговременно

+1

Можете ли вы использовать 'sort (1)'? Это сделает это прямолинейно ». Пара строк сравнивается следующим образом: если были указаны какие-либо ключевые поля,« сортировка »сравнивает каждую пару полей в порядке, указанном в командной строке, в соответствии с соответствующими параметрами заказа, пока различие найдено или никаких полей не осталось. "(http://ss64.com/bash/sort.html) –

+0

Большинство команд UNIX имеют очевидное имя. Чтобы присоединиться к файлам, вы используете 'join', для вставки файлов является' paste', чтобы найти файлы 'find' и т. Д. Итак, я WONDER, что команда ** sort ** files будет вызываться ... ;-) , –

ответ

3
$ sort -n -k1,1 -k2,2 file 
2 6 etc etc etc 
2 30 etc etc etc 
39 12 etc etc etc 
77 5 etc etc etc 
+1

Небольшая коррекция - это должно быть 'sort -n -k1,1 -k2,2'. Указание только начального поля на '-k' (например,' -k1') означает сортировку на основе ключа, начинающегося с поля 1 и заканчивающегося до конца строки. Семантика может казаться тонкой, но результаты могут быть значительно разными. – twalberg

+0

+1. Эд и @twalberg, можете ли вы объяснить разницу между тем, как 'sort' интерпретирует' sort -n -k1,2' по сравнению с 'sort -n -k1,1 -k2,2'? – John1024

+0

@ John1024 '-k1,2' сортируется по одному ключу, состоящему из полей 1 и 2 (также обратите внимание, что все ключи включают в себя любые ведущие пробелы, если вы не используете альтернативный разделитель). '-k1,1 -k2,2' сортируется по двум ключам - сначала по полю 1, и когда эти записи совпадают, он сортируется в поле 2. В обычных случаях разница может быть не очень большой, но это не слишком сложно придумайте примеры, которые кажутся противоречивыми, особенно в отношении «ведущего пробела является частью ключевого» бит ... – twalberg

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