URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7738
[ Назад ]

Исходное сообщение
"замена текста. но как?"

Отправлено rahc , 02-Дек-08 17:35 
#cat secr.sql
spool /db/oradata/dump_db/test/IBS/TABLE/Z#PS$.sql
select dbms_metadata.get_ddl('TABLE','Z#PS$','IBS') c from dual;
host touch -t 0607270607 /db/oradata/dump_db/test/IBS/TABLE/Z#PS$.sql
spool /db/oradata/dump_db/test/IBS/INDEX/Z#IX_Z#PS$_REF3.sql
select dbms_metadata.get_ddl('INDEX','Z#IX_Z#PS$_REF3','IBS') c from dual;
host touch -t 0607270607 /db/oradata/dump_db/test/IBS/INDEX/Z#IX_Z#PS$_REF3>
spool /db/oradata/dump_db/test/IBS/INDEX/PK_Z#PS$_ID.sql
select dbms_metadata.get_ddl('INDEX','PK_Z#PS$_ID','IBS') c from dual;
host touch -t 0607270607 /db/oradata/dump_db/test/IBS/INDEX/PK_Z#PS$_ID.sql
spool /db/oradata/dump_db/test/IBS/INDEX/IDX_Z#PS$_COLL_ID.sql
select dbms_metadata.get_ddl('INDEX','IDX_Z#PS$_COLL_ID','IBS') c from dual;
host touch -t 0607270607 /db/oradata/dump_db/test/IBS/INDEX/IDX_Z#PS$_$COLL_>
spool /db/oradata/dump_db/test/IBS/TABLE/Z#PTL_HIST_REC.sql
<......>
есть файл с содержимым вида выше БОЛЬШООЙ файл

так вот заменить нужно символ $ на \\\$
причем замену нужно совершить в строках вида Z#IX_Z#PS$_REF3(.sql) на Z#IX_Z#PS\\\$_REF3.sql

в строках вида Z#IX_Z#PS$_REF3 без (.sql) замену не производить!!!

как это реализовать никак не пойму?


Содержание

Сообщения в этом обсуждении
"замена текста. но как?"
Отправлено angra , 02-Дек-08 18:11 
sed или perl по вкусу. Ваша проблема, что вы не умеете _четко_ формулировать критерий. Могу попробовать за вас:
заменить символ $ на \\\$ в строках кончающихся на .sql, предполагая что в этих строках всего одно вхождение данного символа.
Итого имеем регекс
для perl s/\$(.*)\.sql$/\\\\\\\$$1/
для sed s/\$\(.*\)\.sql$/\\\\\\\$\1.sql/