Использование Sed для соответствия шаблону и линии Prepend - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь использовать sed для поиска и сопоставления с шаблоном (регулярным выражением) и добавления строки совпадения с двойной чертой (-). По сути, в моем файле есть следующее:

alter user SYS identified by values '' ;
alter user PUBLIC identified by values '' ;
alter user DBA identified by values '' ;
alter user SYSTEM identified by values 
'S:F7A01360E1EECD3565AF171EF5A4109AC6656ABB9F0A1FA6EC11207AB091' ;
'S:82D55FF7743E74B4FCCF4DD2538C161DA2B29DE8688DBC8113EE4BAC9D49' ;
alter user EXP_FULL_DATABASE identified by values '' ;

Я хочу, чтобы это выглядело так:

--alter user SYS identified by values '' ;
--alter user PUBLIC identified by values '' ;
--alter user DBA identified by values '' ;
alter user SYSTEM identified by values 
'S:F7A01360E1EECD3565AF171EF5A4109AC6656ABB9F0A1FA6EC11207AB091' ;
 'S:82D55FF7743E74B4FCCF4DD2538C161DA2B29DE8688DBC8113EE4BAC9D49' ;
--alter user EXP_FULL_DATABASE identified by values '' ;

Я попробовал следующее, но не повезло:

sed / \ values ​​''; / s / ^ / - / alterpwd.sql >> alterpwd_new.sql

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Это может сработать для вас (GNU sed):

sed '/values '\'\'' ;$/s/^/--/' file

Чтобы передать ' через sed, необходимо открыть базовую оболочку, а ' в кавычках, т.е. sed '/'\'\''/d' file удалит строки, содержащие две соседние одинарные кавычки.

0 голосов
/ 31 октября 2018

Вы можете попробовать это:

sed 's/^alter.*values \x27\x27 ;$/--&/' file

или

sed "s/^alter.*values '' ;$/--&/" file

Обратите внимание на внешнюю кавычку в обеих командах. Использование двойной кавычки позволяет встраивать одинарную кавычку.

Для сценария с одинарными кавычками sed необходимо использовать символ одинарной кавычки ascii /x27.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...