Я должен отсортировать следующий список с помощью сценария оболочки и сделать последнюю версию внизу или вверху. Как бы я сделал это только с инструментами оболочки?
release-5.0.0.rc1
release-5.0.0.rc2
release-5.0.0
release-5.0.1
release-5.0.10
release-5.0.11
release-5.0.13
release-5.0.14
release-5.0.15
release-5.0.16
release-5.0.17
release-5.0.18
release-5.0.19
release-5.0.2
release-5.0.20
release-5.0.21
release-5.0.22
release-5.0.23
release-5.0.24
release-5.0.25
release-5.0.26
release-5.0.27
release-5.0.28
release-5.0.29
release-5.0.3
printf '%s\n' ${(on)array}
вzsh
. (когда список находится в$array
массиве).Ответы:
У сортировки GNU есть
-V
то, что может в основном иметь дело со списком, подобным этому ( подробности ):Тем не менее, эти
.rc*
версии могут быть проблемой, так как они, вероятно, должны быть отсортированы перед соответствующей версией без rc, если таковые были, то есть. Некоторые системы управления версиями (например, Debian) используют суффиксы, начинающиеся с tilde (~
), чтобы пометить предварительные выпуски, и они сортируют перед версией без суффикса, который сортирует перед версиями с другими суффиксами. Очевидно, это поддерживается по крайней мере вsort
моей системе, как показано выше (sort (GNU coreutils) 8.23
).источник
-V
также поддерживается по умолчаниюsort
в OpenBSD, но не в NetBSD.Проверьте
sort -V
:Номера версий - сложные звери, с очень немногими стандартами, управляющими буквенными частями, но попробуйте это на ваших реальных данных и посмотрите, достаточно ли это.
источник
mayorNumber–minorNumer some text
, где сортировка полей не выполняется из-за разграничителя Юникода. Спасибо за подсказку!Это можно сделать одной строкой, но разделить ее на несколько строк (в каналах) здесь для удобства чтения, и также обрабатывает
rc
буквы.Если у вас нет
-V
выбора для вашего вида, или даже если у вас есть, вам придется иметь дело с случайнымиrc
:Первый
sed
удаляет нечисловые символы.
sort
Использует.
разделитель (-t.
), числовую сортировку (-n
) и ключи (-k
).В последнем
sed
случае нецифровые символы возвращаются на место.источник
Спасибо за все вдохновение - позвольте мне предложить свой ответ: программу сортировки можно обмануть, чтобы сделать то, что нужно. В конце концов, речь идет о добавлении четвертого числа к 3-значному версионированию, сортировке и последующему удалению. Работает - самое простое решение до сих пор, ИМХО.
результат:
источник
источник