День 2262. #TipsAndTricks
Применяем Естественную Сортировку в PowerShell
PowerShell не предоставляет встроенного способа использовать естественную сортировку. Рассмотрим, как это можно сделать при помощи простого скрипта.
Что такое естественная сортировка?
Естественная сортировка упорядочивает строки таким образом, чтобы это было более удобно для человека. Например, естественная сортировка следующих строк:
file1.txt
file10.txt
file2.txt
выдаст:
file1.txt
file2.txt
file10.txt
Как видите, естественная сортировка упорядочивает строки на основе чисел в строке, а не лексикографического порядка символов.
Простой способ получить естественную сортировку в PowerShell — использовать командлет Sort-Object с пользовательским блоком скрипта. Блок скрипта должен возвращать значение, по которому вы хотите выполнить сортировку. В этом случае вы можете использовать регулярное выражение для извлечения числового значения из строки и дополнить его нулями, чтобы гарантировать правильную сортировку чисел. Например, строка file1.txt будет преобразована в file00001.txt. Вы можете использовать столько нулей, сколько вам нужно, чтобы гарантировать правильную сортировку чисел.
Get-ChildItem | Sort-Object { [regex]::Replace($_.Name, '\d+', { $args[0].Value.PadLeft(100) }) }
Кстати, возможность естественной сортировки строк появится в .NET 10 с помощью нового компаратора строк.
Источник: https://www.meziantou.net/how-to-use-a-natural-sort-in-powershell.htm
>>Click here to continue<<