The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Как правильно обработать строку в shell"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Как правильно обработать строку в shell"  
Сообщение от stmw00d00 email(ok) on 02-Май-08, 17:16 
Скрипту передается переменная вида "83.69.13.1/255.255.255.255;83.69.13.2/255.255.255.255;83.69.13.3/255.255.255.255". Как правильно выдрать из этой строки последний айпишник без маски?
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Как правильно обработать строку в shell"  
Сообщение от angra (ok) on 02-Май-08, 22:28 
Например так:
$ 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
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Как правильно обработать строку в shell"  
Сообщение от jd2 (ok) on 03-Май-08, 12:22 
Для произвольного числа пар:

$ 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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Как правильно обработать строку в shell"  
Сообщение от angra (ok) on 03-Май-08, 13:12 
Ну если уже извращаться, то можно и так:

$ 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
> eof

83.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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Как правильно обработать строку в shell"  
Сообщение от L0n3R4ng3r (ok) on 03-Май-08, 22:19 
>Скрипту передается переменная вида "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}'

к сожалению нету возможности проверить на живой системе, если не заработает заекранируй бек слеш

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру