LINUX.ORG.RU

Сообщения SLRi

 

Вычленение из списка старшей/предыдущей версии

Привет. Допустим есть список пакетов, который формируется исходя из схемы имя-пакета-версия.программы-версиясборки:

kernel-modules-5.4.54-1
kernel-modules-5.4.55-1
kernel-modules-5.4.55-2
kernel-modules-5.4.58-1
kernel-modules-5.4.59-1
kernel-modules-5.4.61-1
kernel-modules-5.4.61-2

Хочу добиться двух простых целей: возможности находить среди списка разных пакетов разных версий последнюю версию для установки и предыдущую версию для даунгрейда. Думаю, каким образом это реализовать. Как вариант, разбивать на колонки на awk с разделителем - с конца, вроде

awk -F "-" '{build=$NF; ver=$(NF-1); print ver, build}' pkg-list

Вычленив эти колонки можно определить при помощи простой сортировки последнюю и предпоследнюю версию. Но как отсеить группы пакетов по остальной части названия, чтобы сравнивать версии и билды только внутри этой группы? Знаю, что в awk есть массивы, которые можно заполнить простой конкатенацией с переносом строки awk -F- '{!a[$N]++}', но в моем случае я не представляю как его применить, потому что количество столбцов при использовании - не только как разделителя, но и как элемента названия пакета, заранее неизвестно. Как можно заполнять массив, если заранее известны только те столбцы, которые точно не войдут туда для сравнения имени пакета ($NF и $(NF-1))? Может быть есть готовые тулзы для решения таких задач или более простые пути?

 , ,

SLRi
()

RSS подписка на новые темы