Сортировка массива на основе подстроки каждого элемента

Загрузите живой диск LinuxMint для вашего процессора (amd64, вероятно? ). Загрузитесь с этим, откройте терминал, запустите sudo gpartedи измените размер разделов.Лучше всего работает, когда Windows полностью закрыта, обновления не выполняются и т. д. и выполняется холодная загрузка.

В качестве альтернативы, как предложено в другом ответе, вы можете где-нибудь создать файловую систему -установить новый диск, получить внешний USB-накопитель или даже создать разреженный файл в разделе Windows и создать на нем файловую систему (, но если вы можете это сделать, просто измените размер раздела! ). Затем снова загрузитесь с диска Mint, смонтируйте установленный root (/ )новую файловую систему, скопируйте/переместите файлы и сделайте соответствующую запись в /etc/fstab вашей установленной системы.

4
16.12.2016, 00:09
1 ответ

Я не знаю, как сделать это встроенным. С квалификаторами globs вы можете указать ключ сортировки ( * (oe \ '' REPLY = $ {$ {REPLY% stuff *} ## * [^ 0-9]} '\') ), но с модификаторами расширения параметров такого нет.

Что вы можете сделать, так это создать вспомогательный массив, содержащий $ {sort_key} $ '\ 0' $ {value} , т.е. добавить нулевой байт и исходное значение к ключу сортировки. Предполагая, что ключи сортировки не содержат нулевых байтов, сортировка этого массива дает желаемый порядок, а удаление префикса ключа сортировки дает желаемый результат.

typeset -a tmp; tmp=(); typeset -i i
for ((i=1; i<=$#arr; i++)); do tmp[$i]=${${arr[$i]%stuff*}##*[^0-9]}$'\0'$arr[$i]; done
print -lr "${(@)${(@o)tmp}#*$'\0'}"
2
27.01.2020, 20:59

Теги

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