ksh + 从字符串中删除数字

ksh + 从字符串中删除数字

字符串 IP 包含一些 IP 地址数字,如下例所示

echo ${IP[*]}

192.9.200.1 192.9.200.2 192.9.200.3

是否可以从列表中删除某些 IP 地址号码(使用 ksh shell)?

例如

我想从字符串“IP”中删除 IP - 192.9.200.2

所以我会得到以下内容

echo ${IP[*]}

192.9.200.1 192.9.200.3

答案1

IP=(192.9.200.1 192.9.200.2 192.9.200.3)
remove=192.9.200.2
new=()
for ip in "${IP[@]}"; do [[ $ip != $remove ]] && new+=($ip); done
echo "${new[*]}"
192.9.200.1 192.9.200.3

或者

for ((i=0; i<${#IP[@]}; i++)); do
    [[ ${IP[i]} == $remove ]] && unset IP[i]
done
echo "${IP[*]}"                                                                 
192.9.200.1 192.9.200.3

答案2

这是可能的,但由于它们没有被散列,所以您必须迭代每个元素:

i=0
for item in "${IP[@]}"; do
    if [ "$item" = 192.9.200.2 ]; then
        unset IP["$i"]
        break # Remove this if the item could appear more than once
    fi
    let i++
done

相关内容