FastNetMon

Показаны сообщения с ярлыком sort. Показать все сообщения
Показаны сообщения с ярлыком sort. Показать все сообщения

четверг, 18 ноября 2010 г.

Как отсортировать текст sort`ом в соответствие с номерами версий?

У sort новых версий (например, в Ubuntu 10.10) есть замечательный ключ -V, который работает вот так:
-V, --version-sort natural sort of (version) numbers within text

Допустим, у нас есть вот такие данные о версиях:
git tag -l | grep '2.6.35'
Linaro-2.6.35-1000.2
Linaro-2.6.35-1000.3
Linaro-2.6.35-1001.5
Linaro-2.6.35-1002.6
Linaro-2.6.35-1003.7
Linaro-2.6.35-1004.8
Linaro-2.6.35-1004.9
Linaro-2.6.35-1005.10
Linaro-2.6.35-1006.11
Linaro-2.6.35-1006.12
Linaro-2.6.35-1007.13
Linaro-2.6.35-1008.14
Linaro-2.6.35-1008.15
Ubuntu-2.6.35-1.1
Ubuntu-2.6.35-10.15
Ubuntu-2.6.35-11.16
Ubuntu-2.6.35-12.17
Ubuntu-2.6.35-13.18
Ubuntu-2.6.35-14.19
Ubuntu-2.6.35-14.20
Ubuntu-2.6.35-15.21
Ubuntu-2.6.35-16.22
Ubuntu-2.6.35-17.23
Ubuntu-2.6.35-18.24
Ubuntu-2.6.35-19.25
Ubuntu-2.6.35-19.26
Ubuntu-2.6.35-19.27
Ubuntu-2.6.35-19.28
Ubuntu-2.6.35-2.2
Ubuntu-2.6.35-2.3
Ubuntu-2.6.35-20.29
Ubuntu-2.6.35-21.30
Ubuntu-2.6.35-21.31
Ubuntu-2.6.35-22.32
Ubuntu-2.6.35-22.33
Ubuntu-2.6.35-22.34
Ubuntu-2.6.35-22.35
Ubuntu-2.6.35-23.36
Ubuntu-2.6.35-23.37
Ubuntu-2.6.35-23.38
Ubuntu-2.6.35-23.39
Ubuntu-2.6.35-3.4
Ubuntu-2.6.35-4.5
Ubuntu-2.6.35-5.6
Ubuntu-2.6.35-6.7
Ubuntu-2.6.35-6.8
Ubuntu-2.6.35-6.9
Ubuntu-2.6.35-7.10
Ubuntu-2.6.35-7.11
Ubuntu-2.6.35-7.12
Ubuntu-2.6.35-8.13
Ubuntu-2.6.35-9.14
Ubuntu-2.6.35-903.10
Ubuntu-2.6.35-903.11
Ubuntu-2.6.35-903.12
Ubuntu-2.6.35-903.13
Ubuntu-2.6.35-903.14
Ubuntu-2.6.35-903.15
Ubuntu-2.6.35-903.16
Ubuntu-2.6.35-903.17
Ubuntu-2.6.35-903.18
Ubuntu-2.6.35-903.19
Ubuntu-2.6.35-903.8
Ubuntu-2.6.35-903.9
v2.6.35

Читать крайне неудобно и непонятно, заюзаем sort -V:
git tag -l | grep '2.6.35' | sort -V
Linaro-2.6.35-1000.2
Linaro-2.6.35-1000.3
Linaro-2.6.35-1001.5
Linaro-2.6.35-1002.6
Linaro-2.6.35-1003.7
Linaro-2.6.35-1004.8
Linaro-2.6.35-1004.9
Linaro-2.6.35-1005.10
Linaro-2.6.35-1006.11
Linaro-2.6.35-1006.12
Linaro-2.6.35-1007.13
Linaro-2.6.35-1008.14
Linaro-2.6.35-1008.15
Ubuntu-2.6.35-1.1
Ubuntu-2.6.35-2.2
Ubuntu-2.6.35-2.3
Ubuntu-2.6.35-3.4
Ubuntu-2.6.35-4.5
Ubuntu-2.6.35-5.6
Ubuntu-2.6.35-6.7
Ubuntu-2.6.35-6.8
Ubuntu-2.6.35-6.9
Ubuntu-2.6.35-7.10
Ubuntu-2.6.35-7.11
Ubuntu-2.6.35-7.12
Ubuntu-2.6.35-8.13
Ubuntu-2.6.35-9.14
Ubuntu-2.6.35-10.15
Ubuntu-2.6.35-11.16
Ubuntu-2.6.35-12.17
Ubuntu-2.6.35-13.18
Ubuntu-2.6.35-14.19
Ubuntu-2.6.35-14.20
Ubuntu-2.6.35-15.21
Ubuntu-2.6.35-16.22
Ubuntu-2.6.35-17.23
Ubuntu-2.6.35-18.24
Ubuntu-2.6.35-19.25
Ubuntu-2.6.35-19.26
Ubuntu-2.6.35-19.27
Ubuntu-2.6.35-19.28
Ubuntu-2.6.35-20.29
Ubuntu-2.6.35-21.30
Ubuntu-2.6.35-21.31
Ubuntu-2.6.35-22.32
Ubuntu-2.6.35-22.33
Ubuntu-2.6.35-22.34
Ubuntu-2.6.35-22.35
Ubuntu-2.6.35-23.36
Ubuntu-2.6.35-23.37
Ubuntu-2.6.35-23.38
Ubuntu-2.6.35-23.39
Ubuntu-2.6.35-903.8
Ubuntu-2.6.35-903.9
Ubuntu-2.6.35-903.10
Ubuntu-2.6.35-903.11
Ubuntu-2.6.35-903.12
Ubuntu-2.6.35-903.13
Ubuntu-2.6.35-903.14
Ubuntu-2.6.35-903.15
Ubuntu-2.6.35-903.16
Ubuntu-2.6.35-903.17
Ubuntu-2.6.35-903.18
Ubuntu-2.6.35-903.19
v2.6.35

Очевидно, сортированный вариант намного удобнее :)