2012-09-05 4 views
0

Я пытаюсь использовать СЭД, чтобы обновить некоторые команды SQL, но получить unterminated S'command`Sed незакрытых `S'команда поиска многострочного и заменить

Команда:

sed -i -f commands.sed mySql.sql 

commands.sed

s;  if @ARI is not NULL 
     begin 
       exec spRun @Name='Txn', @[email protected] output 
;  if @ARI is not NULL 
     begin 
       select @Txn= @Txn+ 1 
;g 

Знаете ли вы, почему?

Спасибо за ваше время!

+0

возможно дубликат [Sed замена многострочного вопрос] (http://stackoverflow.com/questions/6350800/sed-multiline -replacement-question) –

+1

Im мое мнение, что это не дубликат, поскольку он рассматривает чтение из файла, который не задан этим вопросом –

ответ

3

sed работает ориентировочно. Ваш скрипт содержит символы новой строки в шаблонах. Так он жалуется на первую линию,

s;  if @ARI is not NULL 

, который, очевидно, является несогласованным замещением s. Вы, вероятно, лучше использовать регулярные выражения в Perl, чтобы иметь дело с многопоточных замещений в духе

perl -0777 -ne 's/FROM\nLINE\n/TO\nTHIS\n/g;print' 
+0

> В вашем скрипте есть новые строки // thanks :-) Это очень часто возникает в Python – setevoy

Смежные вопросы