У меня есть очень длинный файл, который содержит список зависимостей, их версии и сервис, которому принадлежит зависимость.Этот файл отсортирован и разделен по блокам.
Вот фрагмент из файла, к которому я обращаюсь:
foo.bar.baz:json:jar:2.2.2:compile service: ServiceTwo
foo.bar.baz:json:jar:2.2.10:compile service: ServiceThree
@
asm:asm:jar:3.3.1:compile service: ServiceOne
asm:asm:jar:3.3.1:compile service: ServiceTwo
asm:asm:jar:3.3.0:compile service: ServiceThree
@
hi.bye:beatles:jar:1.6:compile service: ServiceOne
hi.bye:beatles:jar:1.5:compile service: ServiceTwo
hi.bye:beatles:jar:1.15:compile service: ServiceThree
@
Если вы заметите: номера версий несколько отсортировано от высшего к низшему в каждом блоке зависимостей.Я пытаюсь написать сценарий awk
, который будет сортировать каждую строку в соответствующих блоках по наивысшему номеру версии на наименьший номер версии.Вот как должен выглядеть вывод:
foo.bar.baz:json:jar:2.2.10:compile service: ServiceThree
foo.bar.baz:json:jar:2.2.2:compile service: ServiceTwo
@
asm:asm:jar:3.3.1:compile service: ServiceOne
asm:asm:jar:3.3.1:compile service: ServiceTwo
asm:asm:jar:3.3.0:compile service: ServiceThree
@
hi.bye:beatles:jar:1.15:compile service: ServiceThree
hi.bye:beatles:jar:1.6:compile service: ServiceOne
hi.bye:beatles:jar:1.5:compile service: ServiceTwo
@
Примечание. Имена служб в выводе не обязательно должны быть в определенном порядке.Пока версии отсортированы от наибольшего к низшему.
Логически я думаю, что мне следует установить RS="@"
и создать массив, который будет содержать каждую строку в этом блоке, а затем отсортировать эти массивы по версии.номер и распечатать их.Проблема в том, что я не знаю, как отсортировать их по номерам версий.Вот что у меня есть в моем сценарии awk
:
BEGIN {
RS = "@";
}
{
split($0, lines, "\n");
# sort the array by the version number from highest to lowest
# <--- I need help here
for(key in lines) { print lines[key]; }
delete lines;
}
END {
}
Если это не так, я открыт для новых подходов.Любая помощь с этим вопросом будет принята с благодарностью!