Как заставить sort отображать результаты в порядке сортировки, подобном человеческому?

Команда source their-script указывает вашей оболочке выполнить their-script непосредственно в контексте вашего сценария. Это означает, что он имеет доступ ко всем вашим переменным и даже может их изменять.

Если вы удалите слово source и просто запустите their-script в качестве команды, он не сможет повлиять ни на один из ваших кодов и его $ 1 будет первым аргументом, который вы дадите ему, поэтому в этом примере его $ 1 примет значение банан :

their-script banana
5
15.12.2018, 23:56
2 ответа

Как поясняется вman sort:

   -n, --numeric-sort
          compare according to string numerical value

Так ты хочешь:

$ sort -nk1,1 file
1,2,3
2,1,1
10,2,1

Также обратите внимание, что по умолчанию поля разделены пробелами, поэтому эти строки в этом файле содержат только одно поле. Например, первое поле первой строки — 1,2,3, а не 1. Вам нужно будет добавить -t,для ,-separatedполей:

sort -t, -nk1,1 file

С -nsortучитывает только последовательность символов, которая образует допустимое число в начале ключа сортировки (, игнорируя начальные пробелы ). Для этой первой строки без -t,, в зависимости от реализации sortи локали, 1,2,3будет рассматриваться либо как 1, либо как 1.2(, когда десятичный разделитель пользователя —,)или 123(. когда пользовательским разделителем тысяч является ,и sortигнорирует любое его появление ).

9
27.01.2020, 20:34

Если оставить это для всех, кто наткнется на это :sort -V -k1,1 file.txt, должно сработать.

1
27.01.2020, 20:34

Теги

Похожие вопросы