Я использую 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 пользовательский порядок сортировки, который затем можно применить? Примерно так: $ sort -t ',' -k 2,2:'United States, Canada, Bahamas' -k 3,3 -k 4,4 -k 5,5r -k 6,6nr tmp.csv
Спасибо!