分割字符串壳
我有一个IP地址的字符串:分割字符串壳
172.27.16.123
我有一个类似的第二个字符串。
我需要四个不同变量的四个部分,即v1 = 172,v2 = 27,v3 = 16,v4 = 123 我想这样做的原因是我想采取第三个ip并查看它是否存在其间这两个IPS
我试图
echo $givenip | cut -d\. -f3
export v1=`echo $givenip | cut -d\. -f3`
如果我的分隔符是空格,我该如何使用它?如果我尝试:echo $ var |剪下-d \ -f3或echo $ var |切-d \''-f3不起作用。首先它表示分隔符必须只有一个字符,第二个将我的提示符更改为“>”。 – 2015-01-07 20:45:36
'export v1 ='echo $ givenip | cut -d“”-f3' – 2015-01-07 20:52:15
非常感谢! – 2015-01-07 20:53:17
V11 = $(回声$ IP1 |。切-d-F3)
回声$ V11
假设你的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
一些细节[这里](http://*.com/questions/918886/split-string-on-delimiter-in-bash) – 2013-04-23 18:39:42