在bash

时间:2018-01-27 22:51:56

标签: bash hash replace

我有一个关联数组,我从一个文件创建,用于获取每个用户的失败登录尝试。该数组如下所示:

declare -Ai hash

while read -r -a array; do
    [[ "${array[5]} ${array[6]}" == "Failed password" ]] && hash[${array[8]}]+=1
done < $FILEPATH

其中一个用户列为invalid,我想将字符串更改为UNKNOWN。那么如何迭代哈希并找到我需要的字符串并替换它的值?

这样的东西?

for i in "${!hash[@]}"; do
    # (if $i == 'invalid', replace with 'UNKNOWN') ??
done

替换的语法是什么?

2 个答案:

答案 0 :(得分:2)

我脑海中浮现的是使用UNKNOWN

创建元素的副本
hash[UNKNOWN]=hash[invalid]
unset hash[invalid]

答案 1 :(得分:1)

如果我理解正确,你可以这样做:

hash[UNKNOWN]=${hash[invalid]}
unset hash[invalid]