Awk 抓住图案下方的六行数字

Awk 抓住图案下方的六行数字,awk,text-extraction,Awk,Text Extraction,我重复这些台词 FINAL RESULTS NSTEP ENERGY RMS GMAX NAME NUMBER 1000 -4.7910E+01 2.1328E-01 9.4193E-01 C 62 最终结果显示了一组值的平均值。输出文件合并了所有1000个集合。我需要抓取能量(-4.7

我重复这些台词

                               FINAL RESULTS



    NSTEP       ENERGY          RMS            GMAX         NAME    NUMBER
    1000      -4.7910E+01     2.1328E-01     9.4193E-01     C          62
最终结果显示了一组值的平均值。输出文件合并了所有1000个集合。我需要抓取能量(-4.7910E+01)下面的数字,所有1000个都放在另一个文件中。我需要将最终结果设置为模式,因为其他模式,如NSTEP、ENERGY、RMS。。。。以百万计重复


如果有任何帮助,我将不胜感激。

好的,我想我现在明白了

awk 'found==1 { print $2; found=0 } $2=="ENERGY" { found=1 }' inputfile

这将得到下面的数字
能量
,无论它与
最终结果之间有多少行

类似的东西应该适合您:

awk '/FINAL RESULTS/{for (i=0; i<5; i++) getline; print $2}' <filename>
awk '/FINAL RESULTS/{f=1;p=0}{p++}f==1 && p==6{print $2}' file

awk'/FINAL RESULTS/{for(i=0;i这可能适合您:

awk '/FINAL RESULTS/{for (i=0; i<5; i++) getline; print $2}' <filename>
awk '/FINAL RESULTS/{f=1;p=0}{p++}f==1 && p==6{print $2}' file
或者,如果您愿意:

awk 'f==2 && p==1{print $2}{p++}/FINAL RESULTS/{f=1}/ENERGY/ && f==1{f=2;p=0}' file

有了GNU
grep
(还有一些其他的扩展),你可以做一些类似于
grep-a6‘最终结果’


因此,这应该适用于Linux,我看到它适用于最新的MacOS X,我很确定我在FreeBSD上使用过它。因此,它可能适用于您将遇到的大多数UNIX形式。(如果没有,请安装GNU“coreutils”包).

我对此不太清楚,您是希望所有1000行都在
ENERGY
下面,还是仅第一行?文件中有数千行。我需要所有1000行都在ENERGY下面。哦,我想我明白了,整个
最终结果\n…ENERGY\n…
模式重复?这不使用“最终结果”模式因此,它将为其他部分(“NSTEP”等)输出“能量”下的值。这只打印一个值。@potong谢谢你的评论。我用多个值对它进行了测试,效果很好。你能告诉我一个没有产生预期结果的输入示例吗?我应该向你道歉。我以为在
ENERGY
下有1000行,而不是有1000个
最终结果。