Я використовую сортування Unix для сортування файлу, розміщеного комами, у кількох стовпцях. Поки що це прекрасно працювало для сортування даних чисельно чи в алфавітному порядку:
Приклад файлу перед сортуванням:
C,United States,WA,Tacoma,f,1
A,United States,MA,Boston,f,0
B,United States,NY,New York,f,5
A,Canada,QC,Montreal,f,2
A,Bahamas,Bahamas,Nassau,f,2
A,United States,NY,New York,f,1
Сортування файлу: $ sort -t ',' -k 2,2 -k 3,3 -k 4,4 -k 5,5r -k 6,6nr tmp.csv
Відсортований результат:
A,Bahamas,Bahamas,Nassau,f,2
A,Canada,QC,Montreal,f,2
A,United States,MA,Boston,f,0
B,United States,NY,New York,f,5
A,United States,NY,New York,f,1
C,United States,WA,Tacoma,f,1
Ось проблема: я хочу сортувати колонку 2 на основі спеціального сортування, тобто я хочу спочатку Сполучені Штати, потім Канада, потім Багами:
Бажаний сорт:
A,United States,MA,Boston,f,0
B,United States,NY,New York,f,5
A,United States,NY,New York,f,1
C,United States,WA,Tacoma,f,1
A,Canada,QC,Montreal,f,2
A,Bahamas,Bahamas,Nassau,f,2
Чи є спосіб передати unix сортування користувацького порядку сортування, який він може застосувати? Щось на зразок:
$ sort -t ',' -k 2,2:'United States, Canada, Bahamas' -k 3,3 -k 4,4 -k 5,5r -k 6,6nr tmp.csv
Дякую!
t
замість f
останнього рядка?
join
команда, але ви можете закінчити багато сортування - вхідні файли для сортуванняjoin
повинні бути відсортовані в одному порядку, а потім виsort
знову використовуєте для введення даних у інший порядок (і втрата стовпця порядку сортування як крок після сортування).