|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Constantin Stefanov 2:5020/400 12 Dec 2005 15:58:28 To : Eugene Grosbein Subject : Re: sed --------------------------------------------------------------------------------
Eugene Grosbein wrote:
> 12 дек 2005, понедельник, в 14:25 KRAST, Constantin Stefanov написал(а):
>
> >> echo 1a:2:1e:4:e:ed | sed -E 's/:(.):/:0\1:/g'
> >>
> >> Выдает: 1a:02:1e:04:e:ed
> >> А мне надо 1a:02:1e:04:0e:ed
> >>
> >> Что делать?
> CS> echo 1a:2:1e:4:e:ed | sed -E 's/:(.):/:0\1:/g' | sed -E 's/:(.):/:0\1:/g'
> CS> Должно хватить - первый раз заменит второй и четвертый октет, второй -
> CS> третий и пятый. А крайние тут в любом случае не заменятся.
>
> Реальная команда, конечно, учитывает начало и конец, просто сократил
> для упрощения понимания проблемы.
>
> Твой вариант, конечно, работать будет, но я спрашивал о корнях проблемы
> и методах решения, а не обхода.
Hу а про корни уже ответили - двоеточие один раз уже проматчилось,
соответственно, прямо следующий октет не может проматчиться, ибо начало
уже сдивинулось за доветочие, которое его начинает. В перле есть
какие-то спец. фишки в его регэкспах, которые могут и так проматчить
(или флаг какой), но я не помню, как они выглядят.
--
Константин Стефанов
--- ifmail v.2.15dev5.3
* Origin: Demos online service (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/65779e275a9d.html, оценка из 5, голосов 10
|