有没有办法在bash中没有循环的内容找到索引

时间:2016-01-26 17:36:55

标签: bash

我想知道是否有一个简单的解决方案(sed或awk的一行命令)在bash中按内容查找索引。例如,array =(a b c d e),给定目标元素“d”,如何在不循环数组并将每个元素与目标进行比较的情况下获得其相应的数组索引3?

1 个答案:

答案 0 :(得分:1)

尝试使用GNU grep:

array=(a b c d e)
declare -p array | grep -Po '\[\K[^\]](?=\]="d")'

或使用sed:

array=(a b c d e)
declare -p array | sed 's/.*\[\([^\[]\)\]\+="d".*/\1/'

使用grep和sed输出:

3

使用变量:

array=(a b c d e)
target="d"
index="$(declare -p array | grep -Po '\[\K[^\]](?=\]="'"$target"'")')"
echo "$index"