加入或合并两个模式之间的行,包括(sed 或 awk)
Join or merge lines between two patterns inclusive (sed or awk)
我有一个包含多行 SQL 语句的大文件,我需要将其 "join" 放入一行。考虑以下因素:
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 为 "alter table",模式 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 join lines together, and 有点给了我一些想法),但他们不能完全完成任务。
虽然我更喜欢 sed 或 awk 中的答案,但其他人将不胜感激。
提前致谢!
试试这个:
sed ':a;/^alter table.*[^;].$/{N;s/\n //;ba}'
编辑: 这就是没有真正的工具来进行试验的结果。好的,回到这个:
sed ':a;/^alter table/{/;$/!{N;s/\n //;ba}}'
我有一个包含多行 SQL 语句的大文件,我需要将其 "join" 放入一行。考虑以下因素:
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 为 "alter table",模式 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 join lines together, and
试试这个:
sed ':a;/^alter table.*[^;].$/{N;s/\n //;ba}'
编辑: 这就是没有真正的工具来进行试验的结果。好的,回到这个:
sed ':a;/^alter table/{/;$/!{N;s/\n //;ba}}'