Новая строка после $F[1]
вызывает дополнительную строку между группами.Вы можете избежать этого, слегка изменив свой код, чтобы использовать повторение в контексте списка + объединение:
echo '5 aws
2 openstack
1 azure
3 others' | perl -lanE 'say join "\n", ($F[1]) x $F[0]'
# aws
# aws
# aws
# aws
# aws
# openstack
# openstack
# azure
# others
# others
# others
Примечания:
-
x
Оператор в контексте списка (вызванный круглыми скобками $F[1]
) возвращает список повторенных элементов.например, («aws») x 3 вернет «aws», «aws», «aws» join
принимает разделитель и список для объединения
Вероятно, есть много способов сделать это, это просто тот, который мне легко пришёл в голову.