我有一个大文件,里面有多行SQL语句,我需要把它们 "连接 "成一行。考虑到以下情况,我需要将多行SQL语句 "连接 "成一行。
create unique index <bla1 bla1>
<more bla1 bla1>;
alter table <bla2 bla2>
<more bla2 bla2>;
create index <bla3 bla3>
<more bla3 bla3>;
alter table <bla4 bla4>
<more bla4 bla4>
<some more bla4 bla4>;
其中模式1是 "改变表",模式2是";"。我希望输出是
create unique index <bla1 bla1>
<more bla1 bla1>;
alter table <bla2 bla2> <more bla2 bla2>;
create index <bla3 bla3>
<more bla3 bla3>;
alter table <bla4 bla4> <more bla4 bla4> <some more bla4 bla4>;
我看到过其他关于用sed或awk合并行的帖子(最接近的是) 勾连和 如何在两个模式之间打印行,包容或排他性的(在sed,AWK或Perl中)? 有点给了我一些想法),但它们不能完全完成任务。虽然我更喜欢sed或awk中的答案,但任何其他的答案将是感激的。
试试这个。
sed ':a;/^alter table.*[^;].$/{N;s/\n //;ba}'
EDIT: 这就是没有真正的工具来做实验的后果 That's what comes of not having the real tool to experiment with. 好了,回到这个问题上。
sed ':a;/^alter table/{/;$/!{N;s/\n //;ba}}'