连接或合并两个模式之间的线条(包括sed或awk)。

问题描述 投票:0回答:1

我有一个大文件,里面有多行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中的答案,但任何其他的答案将是感激的。

awk sed merge ksh
1个回答
1
投票

试试这个。

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}}'
© www.soinside.com 2019 - 2024. All rights reserved.