Jak udelat s sed-u (perl-u) ...?

Pavel Lisy pali na tmapy.cz
Úterý Prosinec 3 09:59:00 CET 2002


On Po, 2002-12-02 at 14:09, Zdenek Pytela wrote:
> Pavel Lisy píše:
> > Potrebuji pomoci sed-u zakomentovat jednou pasaz v httpd.conf tykajici
> > se SSL, zkusil jsem to udelat nasledujicim zpusobem
> > 
> > sed -e "/<IfDefine HAVE_SSL>/,/<\/IfDefine>/s/^/# /" \
> > 	httpd.conf.backup_twist > httpd.conf
> > 
> > problem je v tom, ze sekce <IfDefine HAVE_SSL> ... </IfDefine> jsou tam
> > ctyri a ja to chci provest pouze v jedne z nich. Napadlo me udelat to
> > pomoci perlu, kde lze jednoduse vyhledavat pres vice radku, ale tam zase
> > neumim zadat substitute nad celou oblasti (to cemu se ve vimu rika
> > range, nebo tak nejak). 
> > 
> > 1. Jak se takova to vec bezne resi?
> Tak jsem to vyresil nasledovne: cele jsem to obalil jeste jednim rankem:

sed -e "/<IfModule mod_ssl.c>/,\${
   /<IfDefine HAVE_SSL>/,/<\/IfDefine>/s/^/# /
}" httpd.conf.backup_twist > httpd.conf

Pozn.: konstrukce \${ je tam kvuli shellu, sed program nacitany ze
souboru tam bude mit pouze ${

Dik za tip na ONE-LINERy, budu studovat.

Sed je mocny nastroj.

Pavel

> > 2. Jde to udelat elegantne? Me napadle pouze to nejak sloziteji v sedu
> > naprogramovat, ale to uz budu muset vice studovat.
> > 
> > Predem diky za kazde nakopnuti spravnym smerem.
> 	Ja bych to v sedu delal pres cyklus nebo pomoci N - nacist dalsi
> radek. Zalezi na tom, jak ty sekce od sebe poznate. Taky by to slo nejak
> obejit na vic pruchodu - typu oznacit nejakym qqq a zmenit napodruhe.
> Sed kdysi mival skvele stranky s one-linery, ktere resily uplne vsechno.



Další informace o konferenci Linux