使用awk将两个模式之间的行输出到不同的输出文件中

时间:2013-12-07 18:09:42

标签: file-io awk

我有一个文件,其中包含许多以“MODEL”开头的“开始标记行”,以及以“ENDMDL”开头的“结束标记行”结尾的许多行。

我想解析文件,以便它抓取从“开始标记行”开始到“结束标记行”结束的所有行到新的输出文件。

换句话说,如果我在一个包含100个“开始标记行”和“结束标记行”的文件上运行它,我想生成100个文件。

我有一个awk命令工作:

 awk '/MODEL/ {flag=1;next} /ENDMDL/{flag=0} flag {print}' 1KZS.pdb > TEST

但是,此命令只会将MODEL - > ENDMDL之间的所有行打印到相同的输出文件中。但我希望每个MODEL - > ENDMDL在 new 输出文件中输出。

如何调整我的awk命令来完成此任务?

1 个答案:

答案 0 :(得分:0)

这样可以解决问题:

$ awk '/MODEL/{f=1;s="FILE"++i;next}/ENDMDL/{f=0;close(s)}f{print > s}' 1KZS.pdb