如何将数组拆分为n个组 [英] How do you break an array in groups of n
本文介绍了如何将数组拆分为n个组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这类似于添加'\ n'在特定数量的定界符之后,但是,如果组中的元素是可编程的,则让我们假设该数量.
This is similar to Add '\n' after a specific number of delimiters, however, lets assume the number if elements in a group is programmable.
我们有:
aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj,kkk,lll,mmm
g=4
我们想要
aaa,bbb,ccc,ddd
eee,fff,ggg,hhh
iii,jjj,kkk,lll
mmm
我们如何使用bash做到这一点?
How do we accomplish this with bash?
我尝试了多种选择.这是最新的失败(tmp []是数组):
I have tried a number of options. Here's the latest failure (tmp[] is the array):
for e in ${tmp[@]}; do
for i in $(eval echo "{0..$groupsof}"); do
foo[$i]=$e;
done
done
推荐答案
使用子字符串扩展. "${array[@]:offset:length}"
让您从offset
开始的length
个元素:
Use substring expansion. "${array[@]:offset:length}"
gets you length
elements starting at offset
:
#!/bin/bash
array=(aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm)
g=4
for((i=0; i < ${#array[@]}; i+=g))
do
part=( "${array[@]:i:g}" )
echo "Elements in this group: ${part[*]}"
done
这篇关于如何将数组拆分为n个组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文