2013-04-23 79 views
-1

我有一個IP地址的字符串:分割字符串殼

172.27.16.123

我有一個類似的第二個字符串。

我需要四個不同變量的四個部分,即v1 = 172,v2 = 27,v3 = 16,v4 = 123 我想這樣做的原因是我想採取第三個ip並查看它是否存在其間這兩個IPS

我試圖

echo $givenip | cut -d\. -f3 
+0

一些細節[這裏](http://stackoverflow.com/questions/918886/split-string-on-delimiter-in-bash) – 2013-04-23 18:39:42

回答

0
export v1=`echo $givenip | cut -d\. -f3` 
+0

如果我的分隔符是空格,我該如何使用它?如果我嘗試:echo $ var |剪下-d \ -f3或echo $ var |切-d \''-f3不起作用。首先它表示分隔符必須只有一個字符,第二個將我的提示符更改爲「>」。 – 2015-01-07 20:45:36

+0

'export v1 ='echo $ givenip | cut -d「」-f3' – 2015-01-07 20:52:15

+0

非常感謝! – 2015-01-07 20:53:17

0

V11 = $(回聲$ IP1 |。切-d-F3)

回聲$ V11

0

假設你的shell是bash,你應該使用數組:

givenip=172.27.18.191 
ip1=($(sed 's/\./ /g' <<< 172.27.16.123)) 
ip2=($(sed 's/\./ /g' <<< 172.27.19.254)) 
ip3=($(sed 's/\./ /g' <<< $givenip)) 

然後你就可以比較組件:

givenip=172.27.18.191 
ip1=($(sed 's/\./ /g' <<< 172.27.16.123)) 
ip2=($(sed 's/\./ /g' <<< 172.27.19.254)) 
ip3=($(sed 's/\./ /g' <<< $givenip)) 

if [ "${ip3[0]}" -ge "${ip1[0]}" -a "${ip3[0]}" -le "${ip2[0]}" ] && 
    [ "${ip3[1]}" -ge "${ip1[1]}" -a "${ip3[1]}" -le "${ip2[1]}" ] && 
    [ "${ip3[2]}" -ge "${ip1[2]}" -a "${ip3[2]}" -le "${ip2[2]}" ] && 
    [ "${ip3[3]}" -ge "${ip1[3]}" -a "${ip3[3]}" -le "${ip2[3]}" ] 
then echo $givenip is between two established IP addresses 
else echo $givenip is not between the two established IP addresses 
fi