ksh + exclui o número da string

2

o IP da string inclui alguns números de endereço IP como o exemplo a seguir

echo ${IP[*]}

192.9.200.1 192.9.200.2 192.9.200.3

é possível remover algum número de endereço IP da lista (usando o shell ksh)?

por exemplo

Eu quero excluir o IP - 192.9.200.2 da string "IP"

então eu vou pegar o seguinte

echo ${IP[*]}

192.9.200.1 192.9.200.3
    
por yael 23.06.2013 / 13:03

2 respostas

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

Ou

for ((i=0; i<${#IP[@]}; i++)); do
    [[ ${IP[i]} == $remove ]] && unset IP[i]
done
echo "${IP[*]}"                                                                 
192.9.200.1 192.9.200.3
    
por 23.06.2013 / 13:18
1

É possível, mas como eles não são hash, você precisa fazer uma iteração sobre cada elemento:

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
    
por 23.06.2013 / 13:14