Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Замена с помощбю SED

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
OlegB



Зарегистрирован: 16.03.2007
Сообщения: 1

СообщениеДобавлено: Пт Мар 16 2007 14:07    Заголовок сообщения: Замена с помощбю SED Ответить с цитатой

Народ! Уже пару дней мучаюсь с заменой.. есть исходный текст след.. вида
Код:

set(rout,cl3)
   client cl2 cinit rout_point
   call T_AddToMandatory(cl2,EventDialing,ew)   
   call T_AddToMandatory(cl3,EventRinging,ew)   
   wait(0,0,rw)
   client cl3 answer()
   call T_AddToMandatory(cl3,EventEstablished,ew)   
   call T_AddToMandatory(cl2,EventEstablished,ew)   
   wait(0,0,cw)
   client cl2 ccompl
   call T_AddToMandatory(cl3,EventPartyChanged,ew)   
   call T_AddToMandatory(cl1,EventPartyAdded,ew)   
   call T_AddToMandatory(cl2,EventPartyAdded,ew)   
   wait(0,0,cw)
   print("0019")




В нем после каждого последнего T_AddToMandatory( ) в группе нужно вставить call StepResult(pName,"1",ew). Т.е он должен стать таким:

Код:

set(rout,cl3)
   client cl2 cinit rout_point
   call T_AddToMandatory(cl2,EventDialing,ew)   
   call T_AddToMandatory(cl3,EventRinging,ew)
   call StepResult(pName,"1",ew)   
   wait(0,0,rw)
   client cl3 answer()
   call T_AddToMandatory(cl3,EventEstablished,ew)   
   call T_AddToMandatory(cl2,EventEstablished,ew)
   call StepResult(pName,"1",ew)
   wait(0,0,cw)
   client cl2 ccompl
   call T_AddToMandatory(cl3,EventPartyChanged,ew)   
   call T_AddToMandatory(cl1,EventPartyAdded,ew)   
   call T_AddToMandatory(cl2,EventPartyAdded,ew)
   call StepResult(pName,"1",ew)   
   wait(0,0,cw)
   print("0019")



Как мне сделать такие замены с помощью SED или чего-то еще подобного? Сам пробовал - никак не получается сделать подходящие группы поиска.. Sad Заранее спасибо!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
x2d



Зарегистрирован: 18.03.2007
Сообщения: 1

СообщениеДобавлено: Вс Мар 18 2007 01:25    Заголовок сообщения: Ответить с цитатой

если есть перл, то можно сделать таким скриптом:
#!/usr/local/bin/perl
open(FILE, "file")||die("Can't open file: $!\n");
@arr = <FILE>;
close(FILE);
foreach(@arr){ # плохо знаю перл
$s = $s.$_;
}
$s =~ s/(call T_AddToMandatory\(.*?ew\)[\t ]*?\n)([\t ]*wait)/\1\tcall StepResult\(pName,"1",ew\)\n\2/mg;
print $s;

потом chmod +x script.pl (script.pl - этот скрипт); потом ./script.pl > file.new;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Uri



Зарегистрирован: 23.03.2007
Сообщения: 4

СообщениеДобавлено: Пт Мар 23 2007 18:17    Заголовок сообщения: Ответить с цитатой

Для sed:
Код:

sed "/AddToMandatory/b be
b
:be
n
/AddToMandatory/b be
i\\call StepResult(pName,\"1\",ew)
"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...