如何将数组拆分为n个组 [英] How do you break an array in groups of n

查看:99
本文介绍了如何将数组拆分为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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆