Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: sed   Constantin Stefanov   12 Dec 2005 15:58:28 
Архивное /ru.unix.bsd/65779e275a9d.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional