Скрипту передается переменная вида "83.69.13.1/255.255.255.255;83.69.13.2/255.255.255.255;83.69.13.3/255.255.255.255". Как правильно выдрать из этой строки последний айпишник без маски?
Например так:
$ echo "83.69.13.1/255.255.255.255;83.69.13.2/255.255.255.255;83.69.13.3/255.255.255.255"| cut -d ';' -f 3| cut -d '/' -f 1
83.69.13.3
Для произвольного числа пар:$ echo "83.69.13.1/255.255.255.255;83.69.13.2/255.255.255.255;83.69.13.3/255.255.255.255" | sed 's#.*;\([^;]\+\)$#\1#; s#^\([^/]\+\)/[^/]\+$#\1#'
83.69.13.3
$ echo "83.69.13.3/255.255.255.255" | sed 's#.*;\([^;]\+\)$#\1#; s#^\([^/]\+\)/[^/]\+$#\1#'
83.69.13.3
Ну если уже извращаться, то можно и так:$ perl -pe '$_=(reverse(split(/[;\/]/)))[1]."\n"' <<eof
> 83.69.13.1/255.255.255.255;83.69.13.2/255.255.255.255;83.69.13.3/255.255.255.255
> 83.69.13.1/255.255.255.255;83.69.13.2/255.255.255.255
> 83.69.13.1/255.255.255.255
> eof83.69.13.3
83.69.13.2
83.69.13.1Можно еще и лишние поубирать, сократив до $_=(reverse split "[;/]")[1] или даже @a=split"[;/]";$_=$a[@a-2]
Ну и напоследок можно вообще обойтись башем:
a="83.69.13.1/255.255.255.255;83.69.13.2/255.255.255.255;83.69.13.3/255.255.255.255";b=${a##*;}; echo ${b%/*}
83.69.13.3
>Скрипту передается переменная вида "83.69.13.1/255.255.255.255;83.69.13.2/255.255.255.255;83.69.13.3/255.255.255.255". Как правильно выдрать из этой строки последний
>айпишник без маски?или через awk :
#echo "83.69.13.1/255.255.255.255;83.69.13.2/255.255.255.255;83.69.13.3/255.255.255.255" | awk -F"/" '{print $2}'
к сожалению нету возможности проверить на живой системе, если не заработает заекранируй бек слеш