ksh + 문자열에서 숫자 제거

ksh + 문자열에서 숫자 제거

문자열 IP에는 다음 예와 같이 일부 IP 주소 번호가 포함되어 있습니다.

echo ${IP[*]}

192.9.200.1 192.9.200.2 192.9.200.3

ksh 쉘을 사용하여 목록에서 특정 IP 주소 번호를 제거할 수 있습니까?

예를 들어

문자열 "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

관련 정보