Linux

ksh + 從字元串中刪除數字

  • June 23, 2013

字元串 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
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

這是可能的,但由於它們沒有被散列,你必須遍歷每個元素:

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

引用自:https://unix.stackexchange.com/questions/80410