我有与How to repeat values from a specific column?
相似的要求我已经从上述问题和此答案(https://stackoverflow.com/a/56743282/6309601)知道了解决方案。但是为了学习perl
,我尝试使用perl
。没有其他原因。
echo "$y"
5 aws
2 openstack
1 azure
3 others
我能够打印数据,但是我不明白为什么输出中会出现空格。
echo "$y" |perl -lanE 'say "$F[1]\n" x "$F[0]"'
aws
aws
aws
aws
aws
openstack
openstack
azure
others
others
others
有人可以帮助我,解释为什么要添加额外的空格吗?
答案 0 :(得分:4)
$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
注意事项:
执行此操作的方法可能很多,这对我来说很容易想到。