There is an array:
bash-5.2$ arr=(a b c d e f)
bash-5.2$ paste <(printf "%s\n" "${!arr[@]}") <(printf "%s\n" "${arr[@]}")
0 a
1 b
2 c
3 d
4 e
5 f
I need to increase indices by 2 to get output:
2 a
3 b
4 c
5 d
6 e
7 f
Is there a way to easily increase all indices by two?
>Solution :
Assuming the objective is to renumber the array indices, one (brute force) idea:
$ arr=(a b c d e f)
$ arr2=(x x "${arr[@]}")
$ arr=("${arr2[@]}")
$ unset arr[0] arr[1]
$ paste <(printf "%s\n" "${!arr[@]}") <(printf "%s\n" "${arr[@]}")
2 a
3 b
4 c
5 d
6 e
7 f
$ typeset -p arr
declare -a arr=([2]="a" [3]="b" [4]="c" [5]="d" [6]="e" [7]="f")
Then again, if OP has the original statement for populating the array then just modify said statement, eg:
$ arr=(x x a b c d e f)
$ unset arr[0] arr[1]
$ paste <(printf "%s\n" "${!arr[@]}") <(printf "%s\n" "${arr[@]}")
2 a
3 b
4 c
5 d
6 e
7 f
$ typeset -p arr
declare -a arr=([2]="a" [3]="b" [4]="c" [5]="d" [6]="e" [7]="f")