- Регулярное выражение для почтового адреса, allez, 09:32 , 09-Фев-05 (1)
Поддержка регулярных выражений в 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/' ===== - Регулярное выражение для почтового адреса, unk, 11:59 , 09-Фев-05 (2)
>echo $ML2 | sed "s/\@((shortdomain)|(full\.domain))/xxx/" >===== >Что не так? Правильно будет так: sed "s/\@\(shortdomain\|full\.domain\)/xxx/"
- Регулярное выражение для почтового адреса, micis, 11:33 , 10-Фев-05 (3)
>Правильно будет так: >sed "s/\@\(shortdomain\|full\.domain\)/xxx/" И так не работает! Методом проб и ошибок выяснилось, что весь затык в символе "|" - без него идёт (странно, не знал, что перед скобками надо ставить "\"). Ну не верю я, что sed не поддерживает эту фичу!
- Регулярное выражение для почтового адреса, allez, 13:15 , 10-Фев-05 (4)
>И так не работает! Методом проб и ошибок выяснилось, что весь затык >в символе "|" - без него идёт (странно, не знал, что >перед скобками надо ставить "\"). >Ну не верю я, что 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, должны поддерживаться, но все еще поддерживаются не полностью. Вывод: не работает этот вариант - воспользуйся тем, что я предложил в своем предыдущем сообщении, он сработает в любом случае. - Регулярное выражение для почтового адреса, unk, 19:39 , 10-Фев-05 (5)
>И так не работает! Методом проб и ошибок выяснилось, что весь затык Что за OS и какая версия sed??? (Для sed из FreeBSD и GNU это не может не работать)
- Регулярное выражение для почтового адреса, micis, 03:28 , 11-Фев-05 (6)
>>И так не работает! Методом проб и ошибок выяснилось, что весь затык >Что за OS и какая версия sed??? >(Для sed из FreeBSD и GNU это не может не работать) Ось - Солярис 9 (а какая версия sed - хз). Скорее всего, там не поддерживается "ветвление", т.к. я попробовал тот же пример на перле - всё ок! Ладно, придётся делать по совету allez-а.
- Регулярное выражение для почтового адреса, Xela, 10:20 , 15-Фев-05 (7)
>Ось - Солярис 9 (а какая версия sed - хз). Скорее >всего, там не поддерживается "ветвление", т.к. я попробовал тот же пример >на перле - всё ок! >Ладно, придётся делать по совету allez-а. Посмотрите внимательнее на опции sed-а. Есть опции -E и -r в разных версиях.
|