Помогите с регулярным выражением....

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
tango
Access Forbidden
Сообщения: 247
Зарегистрирован: 2007-12-15 17:41:18
Откуда: Санкт- Петербург
Контактная информация:

Помогите с регулярным выражением....

Непрочитанное сообщение tango » 2009-03-22 12:50:21

К примеру есть некий текст, в котором нужно найти выражение "192.168.0.1" и развернуть последовательность символов , чтобы получилось "1.0.168.192". Простая замена не подходит, т.к. исходное выражение вносится в файл из переменной. Тоесть изначально что нужно "развернуть в обратную сторону" я не знаю....Надеюсь понятно объяснила.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Помогите с регулярным выражением....

Непрочитанное сообщение Alex Keda » 2009-03-22 12:54:12

разбить по точкам на октеты и с ними работать...
Убей их всех! Бог потом рассортирует...

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Помогите с регулярным выражением....

Непрочитанное сообщение ProFTP » 2009-03-22 12:57:18

почему простая замена не подходит

айпишники в тексте или просто айпи в переменной?

по-миму просто на перд

1) splite выод в массив
2) reverse сортировка в обратную сторону
3) join ('.', @массив); или через map
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Помогите с регулярным выражением....

Непрочитанное сообщение zg » 2009-03-22 13:10:07

Код: Выделить всё

zg# echo 192.168.0.1 | awk -F\. '{print $4"."$3"."$2"."$1}'
1.0.168.192
zg#

Гость
проходил мимо

Re: Помогите с регулярным выражением....

Непрочитанное сообщение Гость » 2009-03-22 19:21:55

zg писал(а):

Код: Выделить всё

zg# echo 192.168.0.1 | awk -F\. '{print $4"."$3"."$2"."$1}'
1.0.168.192
это если точек всего четыре. Но если их количество не определено, то не подойдет. Придется искать другое решение, например

Код: Выделить всё

$ echo 192.168.0.1.001.10029.0292.2302.023 | awk -F. '{ for(i=NF; i>0; i--) s=s $i"." } END { sub("\.$", "", s); print s }'
023.2302.0292.10029.001.1.0.168.192
однако сие надо допилить, ибо как в ipv6, так и в ipv4 нули можно сокращать. Напр,
127.1 = 127.0.0.1
::1 = 0000:0000:0000:0000:0000:0000:0000:0001

Если топикстартеру попадется похожий адрес для обработки...

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Помогите с регулярным выражением....

Непрочитанное сообщение zg » 2009-03-22 19:29:50

Гость писал(а):Но если их количество не определено
и что? :smile: что мешает выбрать только те данные, в которых количество точек строго определено?
Гость писал(а):ибо как в ipv6, так и в ipv4 нули можно сокращать.
man 3 inet впрёд и с песней :smile: можно и по уму сделать, но ресурсозатраты будут другими, а результат таким же. Задача была чётко поставлена, про IPV6 и сокращения сказано не было :roll:

Гость
проходил мимо

Re: Помогите с регулярным выражением....

Непрочитанное сообщение Гость » 2009-03-22 19:50:15

zg писал(а):
Гость писал(а):ибо как в ipv6, так и в ipv4 нули можно сокращать.
man 3 inet впрёд и с песней :smile:
sorry, моя телепатическая антенна не уловила хода твоих мыслей. Что я должен найти в inet(3)?
zg писал(а):можно и по уму сделать, но ресурсозатраты будут другими, а результат таким же. Задача была чётко поставлена, про IPV6 и сокращения сказано не было :roll:
задача как раз четко поставлена не была
tango писал(а):..развернуть последовательность символов , чтобы получилось "1.0.168.192". Простая замена не подходит, т.к. исходное выражение вносится в файл из переменной. Тоесть изначально что нужно "развернуть в обратную сторону" я не знаю....
лично я не совсем понял хода мыслей tango, мало контекста. Единственное, что четко задано "развернуть в обратную сторону" и дан всего лишь один пример. Там нет ни слова, что все данные будут касаться ipv4. А "исходное выражение вносится в файл из переменной" понятно лишь автору, у коего есть скрипт, выражение (регулярное?) и переменная.

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Помогите с регулярным выражением....

Непрочитанное сообщение zg » 2009-03-22 20:00:58

Гость писал(а):sorry, моя телепатическая антенна не уловила хода твоих мыслей.
гм.. при чём тут телепатия? там читать надо :smile:
Гость писал(а):Что я должен найти в inet(3)?
ну... там много чего полезного написано на тему ipv4, на тему ipv6 есть man 4 inet6
Гость писал(а):Там нет ни слова, что все данные будут касаться ipv4
ну да, про реализацию скрипта тоже ничего не сказано, так чего же ты на авк стал катать? следуя твоей логике катай уж на всех языках и под все платформы, а не только под юникс. Будь последователен :smile:

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Помогите с регулярным выражением....

Непрочитанное сообщение Alex Keda » 2009-03-22 21:14:01

авк есть под винду
Убей их всех! Бог потом рассортирует...

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Помогите с регулярным выражением....

Непрочитанное сообщение zg » 2009-03-22 21:50:52

lissyara писал(а):авк есть под винду
есть :smile:

Код: Выделить всё

C:\Documents and Settings\zg>gawk --version
GNU Awk 3.1.0
Copyright (C) 1989, 1991-2001 Free Software Foundation.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

C:\Documents and Settings\zg>
но в авк нет функций для работы с айпи :pardon: поэтому изголяться и делать универсальный мегаскрипт на авк нет абсолютно никакого смысла - все функции для работы с ip давным давно реализованы на С.