shell脚本匹配,并删除未匹配部分

有一个文件,内容如下:
Package: linux-headers-abc
.
.
.
Build-Profiles: abc
\n
Package: linux-image-*
.
.
.
Build-Profiles: abc
\n
Package: linux-headers-def
.
.
.
Build-Profiles: def
\n
.
.
.
怎么匹配换行符\n和Package: linux-headers-*之间的内容(包括Package),并删除其他没匹配的内容。

解题思路:

1-获取Package: linux-headers-的行号列表
2-获取\n的行号列表
3-用2层循环找12组成的起始行号对(比如起始行号为10,那就要找到第一个大于10\n行号,为其对应的截止行号)。
4-遍历上面的起始行号对,倒序删除。加入组成的对为5,10,20,25.
那么先删除25-最后
在删除10-20
再删除首行-5
这样剩下的就是要保留的

注意事项:

1.删除时记得一定要倒序删,正序前面的行号删掉后,后面的行号就变了,倒序删就没有这个问题
2.首行前面是否需要删除需要判断是否满足 第一个行号 > 1

这题和你上次的题差不多,只是第三步复杂了一点。