The OpenNET Project / Index page

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

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

"Регулярное выражение для почтового адреса" 
Сообщение от micis emailИскать по авторуВ закладки on 09-Фев-05, 08:32  (MSK)
Есть 2 адреса: mail1@shortdomain.ru и mail1@full.domain.ru
Они для почтового сервера равнозначны (так настроено). Но при обработке в скрипте таких адресов не могу добится от sed того же:
=====
#!/bin/bash
ML1=mail@full.domain.ru
ML2=mail@shortdomain.ru

echo $ML1 | sed "s/\@((shortdomain)|(full\.domain))/xxx/"
echo $ML2 | sed "s/\@((shortdomain)|(full\.domain))/xxx/"
=====
Что не так?

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

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Регулярное выражение для почтового адреса" 
Сообщение от allez Искать по авторуВ закладки(ok) on 09-Фев-05, 09:32  (MSK)
Поддержка регулярных выражений в sed реализована не полностью, и это описано в его man'e. А в вашем случае поможет такая конструкция:
=====
echo $ML1 | sed 's/full\.domain/xxx/' | sed 's/shortdomain/xxx/'
echo $ML2 | sed 's/full\.domain/xxx/' | sed 's/shortdomain/xxx/'
=====
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Регулярное выражение для почтового адреса" 
Сообщение от unk Искать по авторуВ закладки(ok) on 09-Фев-05, 11:59  (MSK)
>echo $ML2 | sed "s/\@((shortdomain)|(full\.domain))/xxx/"
>=====
>Что не так?
Правильно будет так:
sed "s/\@\(shortdomain\|full\.domain\)/xxx/"
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Регулярное выражение для почтового адреса" 
Сообщение от micis emailИскать по авторуВ закладки on 10-Фев-05, 11:33  (MSK)
>Правильно будет так:
>sed "s/\@\(shortdomain\|full\.domain\)/xxx/"

И так не работает! Методом проб и ошибок выяснилось, что весь затык в символе "|" - без него идёт (странно, не знал, что перед скобками надо ставить "\").
Ну не верю я, что sed не поддерживает эту фичу!

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

4. "Регулярное выражение для почтового адреса" 
Сообщение от allez Искать по авторуВ закладки(ok) on 10-Фев-05, 13:15  (MSK)
>И так не работает! Методом проб и ошибок выяснилось, что весь затык
>в символе "|" - без него идёт (странно, не знал, что
>перед скобками надо ставить "\").
>Ну не верю я, что sed не поддерживает эту фичу!

Скрипт:
========================================
#!/bin/bash
ML1=mail@full.domain.ru
ML2=mail@shortdomain.ru

echo $ML1
echo $ML2

echo $ML1 | sed 's/\@\(shortdomain\|full\.domain\)/xxx/'
echo $ML2 | sed 's/\@\(shortdomain\|full\.domain\)/xxx/'
========================================

Результат его работы (Red Hat 7.2, bash 2.05, sed 3.02):
$ ./script
mail@full.domain.ru
mail@shortdomain.ru
mailxxx.ru
mailxxx.ru

Работает...

А что касается "\(", то вот выдержка из man sed:
>Regular expressions
>       POSIX.2  BREs  should  be  supported, but they aren't completely yet.
Перевод: регулярные выражения, соответствующие стандарту POSIX.2, должны поддерживаться, но все еще поддерживаются не полностью.
Вывод: не работает этот вариант - воспользуйся тем, что я предложил в своем предыдущем сообщении, он сработает в любом случае.

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

5. "Регулярное выражение для почтового адреса" 
Сообщение от unk Искать по авторуВ закладки(ok) on 10-Фев-05, 19:39  (MSK)
>И так не работает! Методом проб и ошибок выяснилось, что весь затык
Что за OS и какая версия sed???
(Для sed из FreeBSD и GNU это не может не работать)

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

6. "Регулярное выражение для почтового адреса" 
Сообщение от micis emailИскать по авторуВ закладки on 11-Фев-05, 03:28  (MSK)
>>И так не работает! Методом проб и ошибок выяснилось, что весь затык
>Что за OS и какая версия sed???
>(Для sed из FreeBSD и GNU это не может не работать)

Ось - Солярис 9 (а какая версия sed - хз). Скорее  всего, там не поддерживается "ветвление", т.к. я попробовал тот же пример на перле - всё ок!
Ладно, придётся делать по совету allez-а.

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

7. "Регулярное выражение для почтового адреса" 
Сообщение от Xela emailИскать по авторуВ закладки(ok) on 15-Фев-05, 10:20  (MSK)
>Ось - Солярис 9 (а какая версия sed - хз). Скорее  
>всего, там не поддерживается "ветвление", т.к. я попробовал тот же пример
>на перле - всё ок!
>Ладно, придётся делать по совету allez-а.


Посмотрите внимательнее на опции sed-а. Есть опции -E и -r в разных версиях.

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


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

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




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

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