Bash 用于使用具有修复模式的结构化文件解析每第 n 次出现的文件

Bash for file parsing every nth occurance with a structured file having fix pattern

我有一个大文件,每个实例的起始模式都是 END(快照),如何编写可以在每个第 n 个实例写入的新文件。例如每第 2 个快照 [1,3,5,..] 或每第 25 个快照 [1, 25, 50, 75, 100, ..],文件包含快照 [1,2,3,4,5...1000]使用以下示例模式。

示例:

END
qweqweq
qweqweq
qweqwe
END
typowoeri
ertpoietp
operitope
END
retorter
erteteert
ewrtert

我要

END
qweqweq
qweqweq
qweqwe
END
retorter
erteteert
ewrtert
awk '/END/{i++}{print > "file."i}' file

我使用上面的代码将文件拆分成单独的文件。我有 3 个快照,我可以获得 3 个单独的文件。但是我想要一个包含每 2 个快照的单个文件?

你或许可以使用这个 awk 为每个不能被 2 整除的 END 块打印行:

awk '/^END$/{++n} n%2' file

END
qweqweq
qweqweq
qweqwe
END
retorter
erteteert
ewrtert