2013-04-23 5 views
-1

У меня есть строка с IP-адресом:Split Строка в скорлупе

172.27.16.123

У меня есть подобная вторая строка.

Мне нужны четыре части в четырех различных переменных, т. Е. V1 = 172, v2 = 27, v3 = 16, v4 = 123 Причина, по которой я хочу, чтобы я хотел взять третий ip и посмотреть, между ними этих двух изобр

Я попытался

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

некоторые подробности [здесь] (http://stackoverflow.com/questions/918886/split-string-on-delimiter-in-bash) –

ответ

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

Как я могу использовать это, если мой разделительный символ - это пробел? Если я пытаюсь: echo $ var | cut -d \ -f3 или echo $ var | cut -d \ '' -f3 не работает. Во-первых, он говорит, что разделитель должен быть только одним символом, а второй изменяет мою подсказку на «>». –

+0

'export v1 =' echo $ givenip | cut -d "" -f3' –

+0

Большое вам спасибо! –

0

Предполагая, что ваша оболочка 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