как проверить, отсортирован ли файл по n-му столбцу в unix?

#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, потому что стабильная сортировка не изменит порядок строк с соответствующими ключами. В этом случае проблема возникает из-за строк с соответствующими ключами, которые переупорядочиваются с помощью нестабильной сортировки.