这类似于 Add '\n' after a specific number of delimiters ,但是,如果组中的元素是可编程的,让我们假设这个数字。
我们有:
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 完成此任务?
我已经尝试了多种选择。这是最新的失败(tmp[] 是数组):
for e in ${tmp[@]}; do
for i in $(eval echo "{0..$groupsof}"); do
foo[$i]=$e;
done
done
最佳答案
使用子字符串扩展。 "${array[@]:offset:length}"
获取从 offset
开始的 length
元素:
#!/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
关于arrays - 你如何打破一组 n 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23747612/