входного файлаPerl один лайнер, чтобы удалить многострочный
<section_begin> mxsqlc
*** WARNING[13052] Cursor C is not fetched.
<section_end>
<section_begin> b2.lst
*
*** WARNING[13052] Cursor C is not fetched.
0 errors, 1 warnings in SQL C file "b2.ppp".
<section_end>
<section_begin> b2s0
SQLCODE=0
SQLSTATE=00000
a=10, b=abc, c=20
SQLCODE=0
SQLSTATE=00000
a=10, b=abc , c=10, d=xyz
<section_end>
ожидая выход без ниже линии.
<section_end>
<section_begin> b2s0
мой код
perl -ne 'print unless /^\<section_end\>(\s*|.*lst)?\s*$/' b2exp
Она удаляет все <section_end>
линии и не удаляет эту линию <section_begin> *.lst
Поскольку вы не предпринимали никаких попыток совпадения? Может быть, вы хотите '/^ (\ s * |. * Lst)? \ S * $/i'. –
Qtax
Или может быть более ограничительным '/^ | begin>. * \. Lst) \ s * $ /'. –
Я использовал то же самое. но не удача perl -ne 'print if /^(\s*|.*lst)?\s*$/i' b2exp возвращает mxsqlc *** ПРЕДУПРЕЖДЕНИЕ [ 13052] Курсор C не выбран. * *** ПРЕДУПРЕЖДЕНИЕ [13052] Курсор C не выбран. 0 ошибок, 1 предупреждение в файле SQL C «b2.ppp». b2s0 SQLCODE = 0 SQLSTATE = 00000 а = 10, б = аЬс, с = 20 SQLCODE = 0 SQLSTATE = 00000 а = 10, б = аЬс, с = 10, d = хуг. отсутствует :( –
user2347191