#sorting #unix
#сортировка #unix
Вопрос:
допустим, у меня есть файл, как показано ниже:(через запятую)
cat test.csv Rohit,India Rahul,India Surya Kumar,India Shreyas Iyer,India Ravindra Jadeja India Rishabh Pant India zzabc,abc
Теперь я хочу проверить, отсортирован ли приведенный выше файл по 02-му столбцу. Я попробовал команду sort-ct»,» -k2,2 test.csv Я ожидаю, что в последней строке будет написано «беспорядок», но это дает мне беспорядок в 02-й строке. Кто-нибудь может сказать мне, что здесь не так? и как получить ожидаемый результат?
Ответ №1:
Сортировка не гарантируется стабильной. Но некоторые реализации sort
поддерживают вариант, который заставит это сделать. Попробуйте добавить -s
:
sort -sc -t, -k2,2 test.csv
но обратите внимание , что я ожидал бы, что первая строка не по порядку Ravindra Jadeja India
, так как 2-е поле этой строки-пустая строка, которая должна сортироваться перед «Индия».
Комментарии:
1. Спасибо, Уильям, за ответ. Я узнал новую вещь, которую можно использовать с сортировкой. И что касается строк «Равиндра Джадеджа Индия» и «Ришабх Пант Индия», это ошибка с моей стороны, это должно было быть «Равиндра Джадеджа, Индия» и «Ришабх Пант, Индия». Еще один вопрос по этому поводу, предположим, в моем файле есть 05 столбцов(тот же файл, разделенный запятыми), и я хочу посмотреть, отсортирован ли файл по 03-му и 05-м столбцам (не включая 04-й). Как я могу это сделать?
2. лол! почему в этом случае важна стабильность ?
3. @Sorin, потому что стабильная сортировка не изменит порядок строк с соответствующими ключами. В этом случае проблема возникает из-за строк с соответствующими ключами, которые переупорядочиваются с помощью нестабильной сортировки.