2013-04-23 112 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