我有一個IP地址的字符串:分割字符串殼
172.27.16.123
我有一個類似的第二個字符串。
我需要四個不同變量的四個部分,即v1 = 172,v2 = 27,v3 = 16,v4 = 123 我想這樣做的原因是我想採取第三個ip並查看它是否存在其間這兩個IPS
我試圖
echo $givenip | cut -d\. -f3
我有一個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://stackoverflow.com/questions/918886/split-string-on-delimiter-in-bash) – 2013-04-23 18:39:42