我有这些行重复
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 ....)将重复数百万次。
我会感激任何帮助。
答案 0 :(得分:6)
这样的事情对你有用:
awk '/FINAL RESULTS/{for (i=0; i<5; i++) getline; print $2}' <filename>
答案 1 :(得分:3)
好的,我想我现在看到了。
awk 'found==1 { print $2; found=0 } $2=="ENERGY" { found=1 }' inputfile
无论它与ENERGY
之间有多少行,这都会得到FINAL RESULTS
以下的数字。
答案 2 :(得分:0)
这可能对您有用:
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
答案 3 :(得分:0)
使用GNU grep
(以及其他一些扩展后的内容),您可以执行grep -A 6 'FINAL RESULTS'
所以这应该适用于Linux,我发现它适用于最近的MacOS X,我很确定我已经在FreeBSD上使用它了。所以它可能适用于您将遇到的大多数UNIX形式。 (如果没有,请安装GNU“coreutils”软件包)。