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

File io 使用awk将两个模式之间的行输出到不同的输出文件中,file-io,awk,File Io,Awk,我有一个文件,其中有许多以“MODEL”开头的“start token line”,还有许多以“ENDMDL”开头的“end token line”结尾的行 我想解析该文件,以便它将从“开始标记行”开始并在“结束标记行”结束的所有行捕获到一个新的输出文件中 换句话说,如果我在一个包含100个“开始令牌行”和“结束令牌行”的文件上运行此命令,我将生成100个文件 我有一个awk命令正在工作: awk '/MODEL/ {flag=1;next} /ENDMDL/{flag=0} flag {pr

我有一个文件,其中有许多以“MODEL”开头的“start token line”,还有许多以“ENDMDL”开头的“end token line”结尾的行

我想解析该文件,以便它将从“开始标记行”开始并在“结束标记行”结束的所有行捕获到一个新的输出文件中

换句话说,如果我在一个包含100个“开始令牌行”和“结束令牌行”的文件上运行此命令,我将生成100个文件

我有一个awk命令正在工作:

 awk '/MODEL/ {flag=1;next} /ENDMDL/{flag=0} flag {print}' 1KZS.pdb > TEST
但是,此命令仅将MODEL-->ENDMDL之间的所有行打印到同一输出文件中。但我希望每个模型-->ENDMDL都输出到一个新的输出文件中


如何调整我的awk命令以实现此目的?

这将实现以下目的:

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

sudo_O,谢谢你。在我给出的这个输入文件中,它应该有20个输出文件。它正确地生成了前17个文件。但是,它随后给了我一个错误“awk:TEST18生成了太多打开的文件。输入记录编号5442,文件1KZS.pdb。源代码行编号1”。你知道这个错误可能意味着什么吗?它的意思就是说
打开的文件太多了。我修改了我的答案,通过关闭
/ENDMDL/
块中的每个文件来处理这个问题。