搜索数组中的字符串并返回unix中的位置

时间:2014-03-09 07:15:05

标签: arrays bash unix search

我有一个二维数组,由第一维中的字母和第二维中的数字组成。例如

a,1
b,3
c,9
d,8

我想要做的是搜索数组中的字符并返回相应的数字。例如,如果$ var ='c'则返回值为9.

由于不熟悉Unix阵列,我想知道是否有人知道如何做到这一点?

谢谢:)

3 个答案:

答案 0 :(得分:0)

这是我提出的

arr1=(a b c d)
arr2=(1 3 9 8)

for ((index=0; index<${#arr1[@]}; index++)); do 
if [ "${arr1[$index]}" = "$myCharacter" ]; then
    echo $arr2[$index]
    return
fi
done
echo 'Character not found'

不确定是否有更短的方法可以做到这一点,但工作正常......

答案 1 :(得分:0)

假设您有一个名为array.txt的文件,其中包含您在问题中显示的输入,

$ var=c
$ awk -v key="$var" -F, '$1 ~ key {print $2; found=1} END { if (! found) { print "Key "key" not found";}}' array.txt
9
$ var=z
$ awk -v key="$var" -F, '$1 ~ key {print $2; found=1} END { if (! found) { print "Key "key" not found";}}' array.txt
Key z not found

答案 2 :(得分:0)

您可以使用bash准备关联数组并使用以下字符查找值:

 declare -A ARR
 ARR=( [a]=1 [b]=3 [c]=9 [d]=8 )
 echo ${ARR[c]}